GLD中文手册(2)

2019-08-20 19:25

为了跟其他ELF连接器兼容,如果'-R'选项后面跟有一个目录名,而不是一个文件名,它会被处理成'-rpath'选项. `-s'

`--strip-all'

忽略输出文件中所有的符号信息. `-S'

`--strip-debug'

忽略输出文件中所有的调试符号信息(但不是所有符号). `-t'

`--trace'

打印'ld'处理的所有输入文件的名字.

`-T SCRIPTFILE'

`--script=SCRIPTFILE'

把SCRIPTFILE作为连接脚本使用. 这个脚本会替代'ld'的缺省连接脚本(而不是增加它的内容),所以命令文件必须指定所有需要的东西以精确描述输出文件.如果SCRIPTFILE在当前目录下不存在,'ld'会在'-L'选项指定的所有目录下去寻找.多个'-T'选项会使内容累积.

`-u SYMBOL'

`--undefined=SYMBOL'

强制SYMBOL在输出文件中作为一个无定义的符号被输入.这样做会有一些效果,比如,会引发从标准库中连接更多的模块. '-u'可以以不同的参数反复使用,以输入多个无定义的符号.这个选项跟连接脚本命令中的'EXTERN'是等效的.

`-Ur'

对于不是C++的程序,这个选项跟'-r'是等效的: 它产生可重定位的输出,比如,一个输出文件它可以再次作为'ld'的输入. 当连接C++程序时,'-Ur'解析

构造 函数的引用,跟'-r'不同. 但如果在一些用'-Ur'连接过的文件上再次使用 '-Ur',它不会工作,因为一旦构造函数表被建立,它不能被添加内容.请只在最后一遍连接的时候使用'-Ur', 对其它的,只使用'-r'.

`--unique[=SECTION]'

对于所有匹配SECTION的输入节,在输出文件中都各自创建单独的节,或者,如果可选的通配符SECTION参数丢失了,为每一个孤儿输入节创建一个输出节. 一个孤儿节是一个连接脚本中没有指定的节.你可以在命令行上多次使用这个选项; 阻止对同名输入节的合并,在连接脚本中重载输出节分配. `-v'

`--version' `-V'

显示'ld'的版本. '-V'选项同时会列出支持的模拟器. `-x'

`--discard-all'

删除所有的本地符号. `-X'

`--discard-locals'

删除所有的临时本地符号.对于大多数目标平台,就是所有的名字以'L'开头的本地符号.

`-y SYMBOL'

`--trace-symbol=SYMBOL'

打印出所有SYMBOL出现的被连接文件的名字. 这个选项可以被多次使用. 在很多系统中,这在预先确定底线时很有必要.

当你拥有一个未定义的符号,但不知道这个引用出自哪里的时候,这个选项很有用.

`-Y PATH'

为缺省的库搜索路径增加一条路径.这个选项是为了跟Solaris兼容.

`-z KEYWORD'

能被识别的关键字包括'initfirst', 'interpose', 'loadfltr', `nodefaultlib', `nodelete', `nodlopen', `nodump', `now',

`origin',`combreloc', `nocombreloc' and `nocopyreloc'. 为了跟

Solaris兼容,所有其它的关键字都被忽略. 'initfirst'标志一个对象,使它在运行时,在所有其他对象之前被初始化. 'interpose'标志一个对象,使它的符号表放在所有其他符号之前,作为主要的执行者. 'loadfltr'标志一个对象,使它的过滤器在运行时立即被处理.'nodefaultlib'标志一个对象,使在搜索本对象所依赖的库时,忽略所有缺省库搜索路径. 'nodelete'标志一个对象,使它在运行时不会被从内存中删除.'nodlopen'标志一个对象,使这个对象不可以通过'dlopen'载入.'nodump'标志一个对象,使它不能被'dldump'转储. 'now'标志一个对象,使它成为非懒惰运行时绑定对象. 'origin'标志一些可能含有$ORIGIN的对象,'defs'不允许无定义符号. 'muldefs'允许重定义. 'comberloc'组合多个重定位节,重新排布它们,让动态符号可见. 'nocomberloc'使多个重定位节组合无效. 'nocopyreloc'使重定位拷贝后的结果无效. --

标 题: GLD中文手册--(二) `-( ARCHIVES -)'

`--start-group ARCHIVES --end-group'

ARCHIVES应当是一个关于档案文件的列表. 它们可以是显式的文件名,或者'-l'选项.

这些指定的档案文件会被多遍搜索,直到没有新的无定义引用被创建. 通常,一个档案文件只会被搜索一次. 但如果这个档案文件中的一个符号需要被用来解析一个档案中的目标引用到的无定义的符号,而这个符号在命令行上的后面某个档案文件中出现, 连接器不能解析这个引用. 把这些档案文件分组后,它们都可被反复搜索直到所有可能的引用都被解析了为止.

使用这个选项有一个很大的运行开销. 只有在无法避免在多个档案文件中使用循环引用时才用它.

`--accept-unknown-input-arch' `--no-accept-unknown-input-arch'

告诉连接器接受那些架构不能被识别的输入文件. 但前提假设是用户知道他们在做什么,并且是故意要连接这些未知的输入文件. 在版本2.14之前,这个是连接器的缺省行为. 从版本2.14以后的,缺省行为是拒绝这类输入文件, 所以

`--accept-unknown-input-arch'选项被用来恢复旧的行为.

`-assert KEYWORD'

这个选项被忽略,只是用来跟SunOS保持兼容.

`-Bdynamic' `-dy'

`-call_shared'

连接动态链接库. 这个仅仅在支持共享库的平台上有用.在这些平台上,这个选项通常是默认行为. 这个选项的不同形式是为了跟不同的系统保持兼容. 你可以在命令行上多次使用这个选项:它影响紧随其后的'-l'选项的库搜索.

`-Bgroup'

在动态节的'DT_FLAGS_1'入口上设置'DF_1_GROUP'标志.这会让运行时连接器在处理在这个对象和它的相关部分搜索时只在组中. '--no-undefined'是隐式的. 这个选项只在支持共享库的ELF平台上有用.

`-Bstatic' `-dn'

`-non_shared' `-static'

不连接共享库. 这个仅仅在支持共享库的平台上有用. 这个选项的不同形式是为了跟不同的系统保持兼容. 你可以在命令行上多次使用这个选项:它影响紧随其后的'-l'选项的库搜索.

`-Bsymbolic'

当创建一个共享库时, 把对全局符号的引用绑定到共享库中的定义(如果有),通常, 一个连接共享库的程序重载共享库中的定义是可能的. 这个选项只在支持共享库的ELF平台上有用.

`--check-sections' `--no-check-sections'

让连接器在节地址被分配后不要去检查节地址是否重叠.通常,连接器会执行这种检查,如果它发现了任何重叠,它会产生相应的错误信息. 连接器知道也允许节的重叠. 缺省的行为可以使用命令行开关`--check-sections'来恢复.

`--cref'

输出一个交叉引用表. 如果一个连接器位图文件被产生, 交叉引用表被打印到位图文件. 否则, 它被打印到标准输出.

表的格式相当的简单, 所以,如果需要,可以通过一个脚本很轻易地处理它. 符号是以名字被打印输出,存储. 对于每一个符号,给出一个文件名列表. 如果符号被定义了, 列出的第一个文件是符号定义的所在. 接下来的文件包含符号的引用.

`--no-define-common'

这个选项限制对普通符号的地址分配. 脚本命令`INHIBIT_COMMON_ALLOCATION'具有同等的效果.

`--no-define-common'选项允许从输出文件的类型选择中确定对普通符号的地址分配; 否则, 一个非重定位输出类型强制为普通符号分配地址. 使用'--no-define-common'允许那些从共享库中引用的普通符号只在主程序中被分配地址. 这会消除在共享库中的无用的副本的空间, 同时,也防止了在有多个指定了搜索路径的动态模块在进行运行时符号解析时引起的混乱.

`--defsym SYMBOL=EXPRESSION'

在输出文件中建立一个全局符号,这个符号拥有一个EXPRESSION指定的绝对地址. 你可以多次使用这个选项定义多个符号. EXPRESSION支持一个受限形式的算术运算:你可以给出一个十六进制常数或者一个已存在符号的名字,或者使用'+'和'-'来加或减十六进制常数或符号. 如果你需要更多的表达式,可以考虑在脚本中使用连接器命令语言, 注意在SYMBOL,=和EXPRESSION之间不允许有空格.

`--demangle[=STYLE]' `--no-demangle'

这些选项控制是否在错误信息和其它的输出中重组符号名. 当连接器被告知要重组, 它会试图把符号名以一种可读的形式的展现: 如果符号被以目标文件格式使用,它剥去前导的下划线,并且把C++形式的符号名转换成用户可读的名字.

不同的编译器有不同的重组形式. 可选的重组形式参数可以被用来为你的编译器选择一个相应的重组形式. 连接器会以缺省形式重组直至环境变量`COLLECT_NO_DEMANGLE'被设置. 这些选项可以被用来重载缺省的设置.

`--dynamic-linker FILE'

设置动态连接器的名字. 这个只在产生动态连接的ELF可执行文件时有效. 缺省的动态连接器通常是正确的; 除非你知道你在干什么,不要使用这个选项.

`--embedded-relocs'

这个选项只在连接MIPS嵌入式PIC代码时有效, 这些代码必须是由GNU的编译器跟汇编器通过-membedded-pic选项生成的. 它导致连接器产生一个表,这个表被用来在运行时重定位所有的被静态初始化为指针值的数据.

`--fatal-warnings'

把所有的警告视为错误.

`--force-exe-suffix'

确保输出文件有一个.exe后缀.

如果一个被成功完整连接的输出文件不带有一个'.exe'或'.dll'后缀, 这个选项确保连接器把输出文件拷贝成带有'.exe'后缀的同名文件. 这个选项在

使用微软系统来编译未经修改的Unix的makefile时很有用, 因为有些版本的 windows不会运行一个不带有'.exe'后缀的映像.

`--no-gc-sections' `--gc-sections'

允许对未使用的输入节的碎片收集. 在不支持这个选项的平台上,被忽略. 这个选项不能跟 '-r'选项共存也不能被用来进行动态连接. 缺省行为可以用 `--no-gc-sections'进行恢复.

`--help'

在标准输出上打印一个命令行选项概要,然后退出.

`--target-help'

打印一个所有目标平台相关的选项的概要,然后退出.

`-Map MAPFILE'

打印一个连接位图到文件MAPFILE中. 参阅上面关于'-M'选项的描述.

`--no-keep-memory'

'ld'通常会以速度优先于内存使用的方式优化程序,这是通过把输入文件的符号表放在内存缓冲中实现的,这个选项告诉'ld'以内存使用优先来优化, 尽可能的减小符号表的重读. 这在'ld'在连接一个大文件时超出内存限制时有用.

`--no-undefined' `-z defs'

通常,当创建一个非符号共享库时, 无定义的符号允许出现,并留待运行时连接器去解决. 这个选项关闭这样的无定义符号的使用. 开关

`--no-allow-shlib-undefined'控制共享对象被连接进共享库时的行为.

`--allow-multiple-definition'


GLD中文手册(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:月令司令司权司命

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: