GCC依賴庫順序問題

2021-09-07 00:22:17 字數 567 閱讀 8489

今天在把linux下做的ipmsg移植到windows過程中,因為包含了乙個開源庫******socket,而這個庫又引用了winsock2,沒太注意就寫下了下面的makefile:

結果報出了n多醜陋的undefined reference..之後嘗試將-lws2_32和-lclsocketd交換位置後,編譯通過。

上網查了下,發現gcc編譯時依賴庫的順序是很重要的。比如說,liba.a依賴於libb.a,則必須寫成-la -lb,似乎感覺這種順序很奇怪。另外參考網上

的內容,在庫比較多依賴關係比較複雜或者相互依賴或者自己不清楚的情況下,可以採取下面2種辦法:

1、-la -lb -la,醜陋,但是有效。

2、gcc有這樣的選項,-xlinker,寫成如下格式可以強制gcc重複查詢依賴庫:

g++ -o tt tt.o -xlinker "-(" -lws2_32 -lclsocketd -xlinker "-)" 

這樣在括號中的庫的依賴關係就不需要你操心啦,雖然會延長鏈結時間。不過本人在實際使用過程中,g++認不出"-)",不加也可以鏈結成功。

GCC依賴庫順序問題

今天在把linux下做的ipmsg移植到windows過程中,因為包含了乙個開源庫 socket,而這個庫又引用了winsock2,沒太注意就寫下了下面的makefile 結果報出了n多醜陋的undefined reference.之後嘗試將 lws2 32和 lclsocketd交換位置後,編譯通...

GCC編譯器 庫依賴

標頭檔案 i選項可以向gcc的標頭檔案搜尋路徑中新增新的目錄 如gcc foo.c i home xiaowp include o foo 庫檔案.靜態庫 a.通過 l選項向gcc的庫檔案搜尋路徑中新增新的目錄 l是指定具體的庫檔案 b.或者查詢環境變數ld library path 動態庫 a.把...

redhad安裝gcc問題 解決依賴問題

在安裝gcc時需要cpp和cloog ppl 但是在安裝cpp的時候需要這個依賴 libmpfr.so.1 64bit is needed by cpp 4.4.6 3.el6.x86 64 安裝cloog ppl的時候需要這2個依賴 libppl.so.7 64bit is needed by c...