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

news/2025/1/16 0:01:19/

文章目录

    • 1.1 GCC 链接器 LD 介绍
      • 1.1.1 GCC 链接器 LD 常用参数介绍
    • 1.2 动态库和静态库介绍
      • 1.2.1 动态库和静态库优缺点
      • 1.2.2 库文件链接方式
      • 1.2.3 ldd 工具介绍
      • 1.2.4 静态库链接时搜索路径顺序
      • 1.2.5 动态库链接时、执行时搜索路径顺序
      • 1.2.6 头文件搜索路径
      • 1.2.7 有关环境变量

上篇文章:ARM 嵌入式 编译系列 3.2 – glibc 学习

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


http://www.ppmy.cn/news/1027783.html

相关文章

【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)

SKNet(Selective Kernel Network)是一种用于图像分类和目标检测任务的深度神经网络架构,其核心创新是引入了选择性的多尺度卷积核(Selective Kernel)以及一种新颖的注意力机制,从而在不增加网络复杂性的情况…

提升SQLAlchemy使用效率:查询、关系和事务

在前一篇文章中,我们介绍了如何使用SQLAlchemy进行基础的数据库操作。在这篇文章中,我们将进一步学习如何使用SQLAlchemy进行查询、处理表之间的关系以及管理事务。 一、使用查询语言 SQLAlchemy的查询语言(Query Language)提供了一种易于理解和使用的…

Linux上的五种IO模型

文章目录 五种模型阻塞非阻塞IO复用信号驱动异步 五种模型 阻塞非阻塞复用IO异步 阻塞 👆read同步IO 非阻塞 EAGAIN:没有事件到达,返回值为-1, errno为EAGAIN IO复用 信号驱动 异步 👆:异步IO&#xff…

Keepalived+Lvs高可用高性能负载配置

环境准备 IP配置VIPnode1192.168.134.170LVSKeepalived192.168.134.100node3192.168.134.172LVSKeepalived192.168.134.100node2192.168.134.171做web服务器使用node4192.168.134.173做web服务器使用 1、准备node1与node3环境(安装LVS与Keepalived)>…

“深入剖析JVM内部原理:解密Java虚拟机的奥秘“

标题:深入剖析JVM内部原理:解密Java虚拟机的奥秘 摘要:本文将深入探讨Java虚拟机(JVM)的内部原理,包括其架构、内存管理、垃圾回收机制、即时编译器等关键组成部分。通过解密JVM的奥秘,我们将更…

Linux部分文件操作记录

问题描述 多级文件夹下,有多个同名文件,以及其他无关文件,为了减轻体量,遍历目录,只保留对应文件 首先open terminal here find . -type f \( ! -name algo_imu.bin -a ! -name post_gnss_only_error.log -a ! -name…

OffSec Labs Proving grounds Play——FunboxEasyEnum

文章目录 端口扫描目录扫描文件上传漏洞利用查看用户爆破密码sudo提权flag位置FunboxEasyEnum writeup walkthrough Funbox: EasyEnum ~ VulnHub Enumeration Brute-force the web server’s files and directories. Be sure to check for common file extensions. Remote…

装备合成(牛客)

登录—专业IT笔试面试备考平台_牛客网 题目: 牛牛有x件材料a和y件材料b,用2件材料a和3件材料b可以合成一件装备,用4件材料a和1件材料b也可以合成一件装备。牛牛想要最大化合成的装备的数量,于是牛牛找来了你帮忙。 分析&#xff…