应用程序需要连接外部库的情况下,linux默认对库的连接是使用动态库,在找不到动态库的情况下再选择静态库。
gcc test.cpp -L. -ltestlib如果当前目录有两个库libtestlib.so libtestlib.a 则肯定是连接libtestlib.so。使用如下连接指定为连接静态库:
gcc test.cpp -L. -static -ltestlib当对动态库与静态库混合连接的时候,使用-static会导致所有的库都使用静态连接的方式。这时需要作用-Wl的方式:
gcc test.cpp -L. -Wl,-Bstatic -ltestlib -Wl,-Bdynamic -ltestdll最后的-Wl,-Bdynamic表示将缺省库链接模式恢复成动态链接
注意,指定静态库连接时,如果连接到系统动态库,最后需要使用-Wl,-Bdynamic恢复动态链接。
参考原文:GCC同时使用静态库和动态库链接
新闻热点
疑难解答