1、什么是ld?它有什么作用? ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种。完成的功能自然也就是链接器的基本功能:把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析。Linking其实主要就是完成四个方面的工作:storage allocation、symbol management、libraries、relocation。 ld可以识别一种Linker command Language表示的linker scriopt文件来显式的控制链接的过程。通过BFD(Binary Format Description)库,ld可以读取和操作COFF(common object file format)、ELF(executable and linking format)、a.out等各种格式的目标文件。 2、常用的选项 -b TARGET 设置目标文件的文件格式 -e ADDRESS 设置目标文件的开始地址 -EB 链接big-endian的目标文件 -EL 链接small-endian的目标文件 -l LIBNAME 创建执行程序时要链接的库文件(比如某个库为test,则可以为-ltest) -L DIRECTORY 寻找要链接的库文件时搜索的文件路径 -o FILE 设置输出文件的名字 -s 去除输出文件中的所有符号信息 -S 去除输出文件中的调试符号信息 -T FILE 读取链接描述脚本,以确定符号等的定位地址 -v 输出ld的版本信息 -x 去除所有的局部符号信息 -X 去除临时的局部符号信息,默认情况下会设置这个选项 -Bstatic 创建的输出文件链接静态链接库 -Bdynamic 创建的输出文件链接动态链接库 -Tbss ADDRESS 设置section bss的起始地址 -Tdata ADDRESS 设置sect...