我正在使用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