文章目录
在使用 gcc main.c -L. -lfoo -o main
命令时,-lfoo
选项会触发链接器(ld
)执行一系列关键操作。以下是详细的步骤解析:
1. 符号解析(Symbol Resolution)
-
查找
libfoo.so
或libfoo.a
链接器按以下顺序搜索库文件:-L.
指定的当前目录。- 标准库路径(如
/usr/lib
、/usr/local/lib
)。 - 若存在同名静态库(
.a
)和动态库(.so
),默认优先链接动态库(除非显式指定-static
)。
-
提取符号表
从libfoo.so
中读取导出的符号(通过nm -D libfoo.so
查看),包括:- 函数(如
add
) - 全局变量(如
extern int global_var;
)</
- 函数(如