ld命令
1.0、参考
1.1、ld命令的作用

ld - the GNU linker

ld命令是一个C/C++链接器

链接器的作用是链接目标文件生成可执行文件

链接器通常被C/C++编译器调用,我们一般不主动调用它。

1.2、ld命令的使用格式
ld [option]... [FILE]...
1.2.1、--help

查看ld命令的使用帮助。

1.2.2、--version

查看ld命令的版本、版权信息。

1.2.3、-v

查看ld命令的版本信息。

1.2.4、-V

查看ld命令的版本、支持的动态库格式信息。

1.2.5、-o FILE, --output[=]FILE

指定输出文件的路径和名称。

1.2.6、-Bstatic | -static

进行静态链接静态链接就是把静态库整体链接到可执行文件或者动态库中,这样生成的可执行文件动态库会很大,但是效率很高。

 此参数与gcc的同名参数意义相同。

1.2.7、-Bdynamic | -dy

进行动态链接动态链接就是把动态库的信息链接到可执行文件或者动态库中,运行的时候动态查找动态库, 这样可以在多个程序之间共享动态库,但是效率没有静态库高。

1.2.8、-shared

创建动态库

 此参数与gcc的同名参数意义相同。

1.2.9、-pie | -PIE

创建可执行文件

 此参数与gcc的同名参数意义相同。

1.2.10、-l<libName>

链接libName

 此参数与gcc的同名参数意义相同。

1.2.11、-L<DIR>

设置查找libName的目录。

 此参数与gcc的同名参数意义相同。

1.2.12、-nostdlib

不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器。

该选项常用于编译内核、bootloader等程序,它们不需要启动文件、标准库文件。

编译器在生成一个C程序的可执行文件时,通常会在我们的代码上加上几个启动文件(crt1.o、crti.o、crtend.o、crtn.o等), 他们是标准库文件。这些代码设置C程序的堆栈等,然后调用main函数。他们依赖于操作系统。