默認情況下,GCC/G++鏈接時優先鏈接動態庫,如果沒有動態庫,則鏈接相應的靜態庫。同時,GCC/G++也提供了鏈接選項 -Wl,-Bstatic 和 -Wl,-Bdynamic 供用戶指定鏈接動態庫或者靜態庫。
-Wl,-Bstatic指示跟在后面的-lxxx選項鏈接的都是靜態庫,-Wl,-Bdynamic指示跟在后面的-lxxx選項鏈接的都是動態庫。
如下,
g++ -L. -o main main.cc -Wl,-Bstatic -ltest -Wl,-Bdynamic
前面的 -Wl,-Bstatic指示鏈接libtest.a靜態庫,后面的 -Wl,-Bdynamic指示鏈接系統動態庫。