libb.a依賴於是liba.a,而可執行檔案test只直接依賴於libb.a,則鏈結選項應當為:
-b -a,而不是-a -b,否則會報liba.a中的某些符號找不到.
gcc -c a.c
ar cr liba.a a.o
gcc -c b.c
ar cr libb.a b.o # 雖然libb.a使用到了liba.o中的一些函式,但並不會將它們的定義包含進來,所以在鏈結test時需要指定這兩個庫
另外,在編譯libb.a時是不指定liba.a的,因為編譯乙個靜態庫不會使用到鏈結選項,而只需要指定需要依賴的標頭檔案路徑即可.
gcc g 動態鏈結庫和靜態庫的鏈結順序
so檔案 動態庫 a檔案 靜態庫 exe檔案 可執行程式 linux下以檔案屬性來標示是否是可執行檔案,與字尾名無關 經過自己寫的一些測試程式,大致了解了下gcc中鏈結順序問題,總結出以下幾點 1,動態庫中可以包含另乙個靜態庫,通過引數 l 把靜態庫lib a加入so檔案中,這樣so檔案中 就包含了...
gcc中動態庫和靜態庫的鏈結順序
so檔案 動態庫 a檔案 靜態庫 exe檔案 可執行程式 linux下以檔案屬性來標示是否是可執行檔案,與字尾名無關 1,動態庫中可以包含另乙個靜態庫,通過引數 l 把靜態庫lib a加入so檔案中,這樣so檔案中 就包含了lib a的所有實現。當然,如果不包含lib a也沒有問題,這樣生成的so會...
gcc中動態庫和靜態庫的鏈結順序
so檔案 動態庫 a檔案 靜態庫 exe檔案 可執行程式 linux下以檔案屬性來標示是否是可執行檔案,與字尾名無關 1,動態庫中可以包含另乙個靜態庫,通過引數 l 把靜態庫lib a加入so檔案中,這樣so檔案中 就包含了lib a的所有實現。當然,如果不包含lib a也沒有問題,這樣生成的so會...