文章目录
上篇文章:【ARM 嵌入式 编译系列 3.2 – glibc 学习
下篇文章:【ARM 嵌入式 编译系列 4 – GCC 编译属性 __read_mostly 详细介绍】
1.1 GCC 链接器 LD 介绍
链接器(ld)是GCC工具链中的一个重要组成部分,主要任务是将编译器生成的目标文件链接成可执行文件或库文件。
链接器可以进行符号解析、地址分配、节(section
)布局等任务。链接器还可以使用链接脚本来控制链接过程,链接脚本可以指定输出文件的内存布局,控制哪些节会被包含,以及它们在输出文件中的位置。
当你使用GCC编译并链接一个程序时,GCC会先调用编译器将源代码编译成目标文件,然后调用链接器将目标文件链接成可执行文件。例如,当你使用以下命令来编译并链接一个程序时:
gcc -o output source.c
GCC首先将 source.c
编译成一个临时的目标文件,然后调用链接器将这个目标文件链接成名为output
的可执行文件。
所以,简单来说,GCC和链接器(ld)都是GCC工具链的一部分,GCC负责编译,链接器负责链接。
arm-none-eabi-ld 是一个通常用于嵌入式ARM开发的连接器。
1.1.1 GCC 链接器 LD 常用参数介绍
下面是一些常用的 ld
或者( arm-none-eabi-ld
)参数:
-
-L
:添加库文件搜索路径。例如,-L/my/path
会让链接器在/my/path
下查找库文件; -
-l
:链接库文件,例如,-lm
表示链接数学库(libm
);链接器会在指定的路径下查找库文件。 注意:-l
后面直接添加库名省去“lib
”和“.so
”或“.a
” ); -
注意区分链接器参数
-L
/-l
和 GCC-I
/-i
区别-
-I
:指定头文件路径(相对路径或绝对路径,建议相对路径); -
-i
:指定头文件名字 (一般不使用,而是直接放在.c</
-