ILD

链接脚本的后缀
作者:HerbertYuan 邮箱:yuanjp89@163.com
发布时间:2017-9-18 站点:Inside Linux Development

https://sourceware.org/ml/crossgcc/2000-11/msg00004.html


Re: linker script filename extension


   Date: Wed, 1 Nov 2000 16:00:18 +0200 (EET)
   From: <jani@virtualro.ic.ro>

   could anybody tell me what the extensions of the linker script
   files stand for ?They have names like 

	   target.[x|xbn|xu|xn|xr|xs]

First I'm going to say that it doesn't matter.  There is no functional
purpose to those names.  If you think it does matter, then you are
probably making a mistake.

However, there is an answer.  From ld/genscripts.sh:

# A .x script file is the default script.
# A .xr script is for linking without relocation (-r flag).
# A .xu script is like .xr, but *do* create constructors (-Ur flag).
# A .xn script is for linking with -n flag (mix text and data on same page).
# A .xbn script is for linking with -N flag (mix text and data on same page).
# A .xs script is for generating a shared library with the --shared



http://lists.llvm.org/pipermail/llvm-dev/2012-December/057390.html


As far as I can tell, ldscripts usually have suffix `.lds` and more rarely
`.ld`.


Inside Linux, most linker scripts have suffix `.lds.S`, the `.S`
signifying that indicates that they need to be passed through the C
preprocessor.

This is not as ugly as you may think at first. The C preprocessor is used
primarily as a means of sharing common constants and definitions between
the linker scripts, assembly code, and C code; it's not clear that there is
a better way to accomplish this.

The totality of the linker scripts (and related files) I could find in Linux
is comprised of:
        scripts/module-common.lds
        include/asm-generic/vmlinux.lds.h
                - common preprocessor definitions used for the linker
                  scripts for kernel image ("vmlinux").
        arch/**/*.lds*
                - There are 71 of these total. Most of these
                  are related to linking the kernel image. The rest are
                  composed of mostly vDSO and bootloader stuff.


Copyright © insidelinuxdev.net 2017-2021. Some Rights Reserved.