Makefile中 链接库,同一个库的静态库与动态库都链接了,生效的是哪个库
Makefile中 链接库,同一个库的静态库与动态库都链接了,生效的是哪个库
在 Makefile 中同时链接同一个库的静态库(.a
)和动态库(.so
)时,具体哪个库生效取决于链接顺序和编译器行为。以下是详细分析:
1. 链接顺序决定优先级
链接器(如 ld
)在处理库时遵循从左到右的顺序,并按照以下规则选择库:
- 优先使用第一个满足依赖的库:
如果静态库和动态库都能满足当前依赖,链接器会选择最先出现的库。 - 后续相同库会被忽略:
一旦某个库被用于解析符号,后续相同的库(无论静态或动态)都会被忽略。