编译链接实战(28)链接动态库时(-l选项),背后做了哪些事

在使用 gcc main.c -L. -lfoo -o main 命令时,-lfoo 选项会触发链接器(ld)执行一系列关键操作。以下是详细的步骤解析:


1. 符号解析(Symbol Resolution)

  • 查找 libfoo.solibfoo.a
    链接器按以下顺序搜索库文件:

    1. -L. 指定的当前目录。
    2. 标准库路径(如 /usr/lib/usr/local/lib)。
    3. 若存在同名静态库(.a)和动态库(.so),默认优先链接动态库(除非显式指定 -static)。
  • 提取符号表
    libfoo.so 中读取导出的符号(通过 nm -D libfoo.so 查看),包括:

    • 函数(如 add
    • 全局变量(如 extern int global_var;)</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值