资源描述:
《unix 下 ld编译选项》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、描述(DESCRIPTION)ld合并一组目标文件(object)和库文件(archive),重定位数据部分,构建符号引用(symbolreference).一般说来,编译生成可执行文件的最后步骤就是调用ld.ld可以读取用连接器命令语言(LinkerCommandLanguage)编写的脚本文件,它能够对连接过程提供精确和全面的控制.本手册页不讨论命令语言;可参看`info'的`ld'项,或者手册ld:theGNUlinker,里面有命令语言的细节和其他GNUlinker的内容.这个版本的ld使用通用BFD库操作目标文件,ld能够以多种格式读入,连接
2、和输出目标文件---例如COFF或a.out,能够把不同的格式连接在一起,产生各种有效的目标文件.用`objdump-i'可以列出各种体系结构支持的格式列表;另见objdump(1).GNUlinker不仅灵活强大,还能够比其他linker提供更多的诊断信息.很多linker只要碰上一个错误就立刻停止执行;而ld一有可能仍然继续执行,这样容易定位出其他错误(某些情况下,尽管出了错,仍然生成输出文件).GNUlinkerld期望实现更广泛的适用范围,尽可能兼容其他linker.通过命令行和环境变量,用户可以用ld执行多种操作.选项(OPTIONS)过于丰
3、富的命令行选项使人感到压抑,好在实际使用中,多数情况下只需要掌握其中一小部分.例如,在一个标准的,提供相应支持的Unix系统中,常常用ld连接标准的Unix目标文件.如果要连接hello.o:$ld-ooutput/lib/crt0.ohello.o-lc它告诉ld生成一个叫做output的文件,其中连接了文件/lib/crt0.o和hello.o以及库文件libc.a(在标准搜索目录下).ld的命令行选项可以任意顺序出现,甚至重复出现.多数情况下,如果用不同的参数重复同一种选项,ld不会出现更多的变化,也不会覆盖以前的参数.(指命令行中左边的参数)例
4、外情况---某些选项有反复使用的需要---如-A,-b(或等同的-format),-defsym,-L,-l,-R,和-u.待连接的目标文件列表,即总览中的objfile,可以放在命令行选项的前面,后面,或者混杂其中;但是不能把objfile放置于某个选项开关和它的参数中间.一般说来linker要求至少输入一个目标文件,但是可以用-l,-R输入其他格式的二进制文件,或者用命令语言编写的脚本文件.如果没有指定二进制格式的输入文件,linker就不能产生输出文件,而是显示`Noinputfiles'.选项的参数必须出现在代表选项的字母后面,可以有空白符,也
5、可以没有.-Aarchitecture在目前版本的ld中,这个选项仅适用于Intel960体系系列.在ld的设置中,architecture参数是960系列的成员识别名称之一,由两个字母组成;这个选项指出期望的输出目标,对输入文件的不兼容指令作出警告.它能够改变linker对库文件的搜索策略,以便于支持体系相关库,方法是把体系识别名称添加在待搜索的文件名尾部.例如,如果ld命令行有`-ACA'和`-ltry',linker将搜索(根据内置的路径和-L指定的路径)以下名称的库文件trylibtry.atrycalibtryca.a前两项是常规做法;后两项
6、源于`-ACA'.将来发布的ld可能对其他体系结构提供类似功能.可以在命令行上使用多个-A选项,只要该体系允许和目标体系相连,其选项使ld在搜索-l指定的库中,增加和体系结构名称对应的库.-binput-format指定输入目标文件的二进制格式,目标文件在命令行上给出,放在这个选项的后面.一般不需要指定这个选项,ld的缺省输入格式配置为各个机器上最常用的格式.input-format是字符串,BFD库支持的格式名称.选项-formatinput-format起相同的作用,脚本命令TARGET也是一样.连接某些不寻常的二进制文件时需要这个选项.或者使用-
7、b选项强调格式切换(连接不同格式的目标文件),比如说,在每组特定格式的目标文件前面使用-binput-format选项.环境变量GNUTARGET用于指定缺省格式.也可以在脚本文件中用TARGET命令定义输入格式.-Bstatic禁止连接共享库.这个选项只在支持共享库的平台上有意义.-Bdynamic连接动态库.这个选项只在支持共享库的平台上有意义,一般说来它是缺省选项.-Bsymbolic当创建共享库的时候,只要有可能,在共享库内编联(bindreference)全局符号和定义(definition).一般说来,允许连接了某个共享库的程序覆盖共享库内
8、的定义.这个选项只在支持共享库的ELF平台上有意义.-ccommandfile告诉ld从文件c