在應用程序需要連接外部庫的情況下,linux默認對庫的連接是使用動態(tài)庫,在找不到動態(tài)庫的情況下再選擇靜態(tài)庫。使用方式為:
gcc test.cpp -L. -ltestlib
如果當前目錄有兩個庫libtestlib.so libtestlib.a 則肯定是連接libtestlib.so。如果要指定為連接靜態(tài)庫則使用:
gcc test.cpp -L. -static -ltestlib
使用靜態(tài)庫進行連接。
當對動態(tài)庫與靜態(tài)庫混合連接的時候,使用-static會導致所有的庫都使用靜態(tài)連接的方式。這時需要作用-Wl的方式:
gcc test.cpp -L. -Wl,-Bstatic -ltestlib -Wl,-Bdynamic -ltestdll
另外還要注意系統(tǒng)的運行庫使用動態(tài)連接的方式,所以當動態(tài)庫在靜態(tài)庫前面連接時,必須在命令行最后使用動態(tài)連接的命令才能正常連接
,如:
gcc test.cpp -L. -Wl,-Bdynamic -ltestdll -Wl,-Bstatic -ltestlib -Wl,-Bdynamic
最后的-Wl,-Bdynamic表示將缺省庫鏈接模式恢復成動態(tài)鏈接。