在 GCC 中連線庫的順序應是什麼?


連結器從左到右搜尋。搜尋過程中,它會遇到未解析符號並記錄下來。如果某個庫解析了未解析符號,則它會使用該庫的物件檔案來解析該符號。

靜態庫之間的依賴關係同樣如此。需要從其他庫獲取符號的庫排在解析該符號的庫之前。如果您有迴圈依賴關係,您必須用括號括起具有迴圈依賴關係的庫。例如,如果您有兩個相互依賴的庫 a 和 b −

$ g++ hello.cpp -L. -( -la -lb -)

較新的連結器更智慧,它能跟蹤前一個靜態庫所使用過的函式,並永久地從查詢表中刪除那些沒有使用的函式。因而,如果在連結線中較早地連結某個靜態庫,則該庫的方法在連結線中的後續靜態庫都無法使用。


更新日期:02-Mar-2020

960 瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.