以下内容源于网络资源的学习与整理,如有侵权请告知删除。
参考内容
https://www.cnblogs.com/huqingyu/archive/2005/02/28/110468.html
一、工具简介
ld是GNU链接器,用于将目标文件与库文件链接成可执行文件或者库文件。
二、使用方法
通过man手册,可知该工具使用格式如下。
ld [options] obj_file #[]表示该项是可选的,obj_file表示目标文件
(1)ld支持众多选项,这里仅列出一些常用的选项。
选项 | 描述 |
-e | 指定程序的入口标号。 |
-l libName | 指定要链接的库Name。 |
-L Directory | 增加库文件的搜索路径Directory。 |
-o FILE | 设置输出文件名为FILE。 |
-r --relocateable |
产生可重定向的输出。比如,产生一个输出文件它可再次作为‘ld’的输入,这经常被叫做“部分链接”,当我们需要将几个小的.o文件链接成为一个.o文件的时候,需要使用此选项。 |
Ttext address1 Tbss address2 Tdata address3 |
指定代码段链接地址为address1。 指定bss段链接地址为address2。 指定数据段链接地址为address3。 |
-T SCRIPTFILE --script=SCRIPTFILE |
把SCRIPTFILE作为链接脚本使用。如果SCRIPTFILE在当前目录下不存在,则会在-L选项指定的目录下去寻找。多个-T选项会使内容累积。-T与SCRIPTFILE之间可以有空格,也可以紧挨着。 |
-nostdlib | 仅搜索那些在命令行上显式指定的库路径,在链接脚本中(包含在命令行上指定的链接脚本)指定的库路径都被忽略。 |
-Bstatic -static -non_shared |
不连接共享库。这个仅仅在支持共享库的平台上有用。这个选项的不同形式是为了跟不同的系统保持兼容。你可以在命令行上多次使用这个选项,它影响紧随其后的-l选项的库搜索。 |
(2)下面是一些实例说明。
- arm-linux-ld -Ttext 0X87800000 led.o -o led.elf #指定代码段链接地址为0X87800000
- arm-linux-ld -Tlink.lds -o uart.elf $^ #指定链接脚本为link.lds