我正在使用apple gcc來編譯我要重新分發的dylib。出於各種原因,我使用一些庫,讓我們說libz
保持簡單。避免在鏈接到靜態庫時鏈接到未使用的符號
由於這個庫通常不在Mac系統上,我希望static link in通過將路徑傳遞到.a-file
來簡化部署,將符號用到dylib中。
現在,鏈接器鏈接所有符號從lib到生成的dylib,雖然我只引用一個子集。在linux上,我從來沒有遇到過這個問題,鏈接器高興地丟棄所有未引用的符號並創建一個非常纖細的可執行文件,所以它應該是可能的。我現在擁有的dylib文件比它應該大10倍。
我試着用-dead_code連接器標誌擺弄,但無濟於事。也許我只是不明白嗎?
有沒有人知道這個解決方案?
感謝您的谷歌這一點。在mac上進行編譯與'ELF'相對的'Mach-O'對象與' - gc-sections'開關一起使用。我試着'-gfull'開關和'-dead_strip'一起使用,但無濟於事。 – vidstige 2011-04-09 16:40:44