2012-07-24 19 views
9

從gcc 4.5移到gcc 4.6,現在它不鏈接到在編譯時未使用的庫(即,如果沒有從它們導入符號)。強制鏈接到未使用的共享庫

然而,這些庫的目的是它們執行靜態構造函數,從而使它們在運行時可用於應用程序(註冊它們的符號)。

有沒有辦法強制gcc鏈接到通過-l列出的所有庫?

+1

可能發生變化。在'-Wl,-no-as-needed'中嘗試在'-l'標誌前面(不記得確切的語法,並且現在不能訪問編譯器) – Mat 2012-07-24 12:50:51

回答

9

它看起來像你需要-Wl,--no-as-needed完全禁用它。或者,--no-as-needed -lfoo --as-needed僅針對libfoo禁用「按需」。

來源:https://lists.ubuntu.com/archives/ubuntu-devel/2010-November/031991.html

編輯:阿貌似Mat居然在評論中`作爲-needed`選項打我這個:-)

+0

似乎沒有幫助,現在也嘗試着--copy-DT-需要的條目。也許需要重新編譯源文件,而不僅僅是重新鏈接? – queen3 2012-07-24 13:20:16

+0

重建幫助。 – queen3 2012-07-24 15:25:21