從gcc 4.5移到gcc 4.6,現在它不鏈接到在編譯時未使用的庫(即,如果沒有從它們導入符號)。強制鏈接到未使用的共享庫
然而,這些庫的目的是它們執行靜態構造函數,從而使它們在運行時可用於應用程序(註冊它們的符號)。
有沒有辦法強制gcc鏈接到通過-l列出的所有庫?
從gcc 4.5移到gcc 4.6,現在它不鏈接到在編譯時未使用的庫(即,如果沒有從它們導入符號)。強制鏈接到未使用的共享庫
然而,這些庫的目的是它們執行靜態構造函數,從而使它們在運行時可用於應用程序(註冊它們的符號)。
有沒有辦法強制gcc鏈接到通過-l列出的所有庫?
它看起來像你需要-Wl,--no-as-needed
完全禁用它。或者,--no-as-needed -lfoo --as-needed
僅針對libfoo
禁用「按需」。
來源:https://lists.ubuntu.com/archives/ubuntu-devel/2010-November/031991.html
編輯:阿貌似Mat居然在評論中`作爲-needed`選項打我這個:-)
可能發生變化。在'-Wl,-no-as-needed'中嘗試在'-l'標誌前面(不記得確切的語法,並且現在不能訪問編譯器) – Mat 2012-07-24 12:50:51