binutils工具集——ld的用法

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

参考内容

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


 

猜你喜欢

转载自blog.csdn.net/oqqHuTu12345678/article/details/129469991