gcc 静态库和动态库的使用
应用程序需要连接外部库的情况下,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恢复动态链接。