链接静态库时避免链接未使用的符号
我正在使用 Apple gcc 编译一个我要重新分发的 dylib。由于各种原因,我使用了一些库,为了简单起见,我们使用 libz
。
由于这个库通常在 Mac 系统上找不到,我希望静态链接< /a> 通过将路径传递到 .a-file
来使用符号到 dylib 中以简化部署。
现在,链接器将 lib 中的所有符号链接到生成的 dylib 中,尽管我只引用了一个子集。在 Linux 上我从未遇到过这个问题,链接器很高兴地丢弃所有未引用的符号并创建一个非常小的可执行文件,所以它应该是可能的。我现在拥有的 dylib 文件比应有的大 10 倍。
我尝试摆弄 -dead_code 链接器标志,但无济于事。也许我只是不明白?
有谁知道这个问题的解决办法吗?
I'm using the apple gcc to compile a dylib that I'm going to redistribute. For various reasons I'm using some libraries, let's say libz
to keep it simple.
Since this library is not typically found on a Mac system I wish to static link in used symbols into the dylib by passing the path to the .a-file
to simplify deployment.
Now, the linker links in all symbols from the lib into the resulting dylib although I only reference a subset. On linux I've never encountered this problem, the linker happily discards all unreferenced symbols and creates a very slim executable, so it should be possible. The dylib file I have now is ~10 times larger than it should.
I've tried fiddle around with the -dead_code linker flag, but to no avail. Perhaps I just don't understand it?
Does anyone know the solution to this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试
-Wl,- -gc-sections
。关于
-dead_strip
(
-dead_code
可能是您的意思):和:
希望这有帮助。
此答案中的所有内容均位于“apple ld static link Unused Symbols”的前几个 Google 搜索结果中。 :)
Try
-Wl,--gc-sections
.As regards
-dead_strip
(what you probably meant by-dead_code
):and:
Hope this helps.
All content in this answer was located within the first few Google search results for "apple ld static link unused symbols". :)