概述
构建某个库时,为了兼容性考虑,会同时编译静态库与动态库,比如test.a/test.so。而在Makefile的构建中如果直接写ltest时,ld会优先连接动态库。如果想显式指定ld连接静态库,则参考下文。
-Wl,-Bstatic 选项
gcc中指定-Wl,-Bstatic选项,则是显式告知GCC此处连接的是静态库。
-Wl,-Bdynamic 选项
gcc中指定-Wl,-Bdynamic,则是显式告知GCC此处连接的是动态库。
示例
main.c需要连接libxxx.so与libyyy.a的库。此时gcc需要如下方式:
gcc -Wl,-Bstatic -lxxx -Wl,-Bdynamic -lyyy -g main.c