【ARM 嵌入式 编译系列 3.3 -- gcc 动态库与静态库的链接方法详细介绍】

本文详细介绍了ARM嵌入式开发中GCC链接器LD的常用参数,动态库与静态库的优缺点,链接方式,以及ldd工具的使用。动态库在运行时被加载,静态库在编译时被包含,静态库生成的可执行文件独立但较大,动态库则可节省空间但需依赖外部库。GCC链接时,会优先选择.so动态库,如需链接静态库,需使用特定参数。
摘要由CSDN通过智能技术生成


请阅读【ARM GCC 编译专栏导读】



上篇文章:【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</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公讲 ARM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值