gcc与clang:符号剥离

17

gcc和AMD Open64 opencc都有一个-s选项,用于“剥离符号表和重定位信息”。到目前为止,我还没有在Clang/LLVM中找到相同的选项。它存在吗?


1
我认为你应该使用objcopy(来自binutils)来拆分符号。这样,如果你的用户之一遇到了崩溃,你就可以很方便地使用它们,但是你不必将它们与提供给用户的二进制文件一起包含。 - 0xC0000022L
似乎某些东西被遗漏了。请在LLVM Bugzilla中提交PR。谢谢! - Anton Korobeynikov
@Anton 好的,我已经提交了 http://llvm.org/bugs/show_bug.cgi?id=9986 。 - Reinderien
1个回答

13
您可以使用binutils中的strip实用程序。
实际上,llvm-ld有这个选项:http://llvm.org/cmds/llvm-ld.html

-strip-all,-s从可执行文件中删除所有调试和符号信息,使其更小。

-strip-debug,-S从可执行文件中删除所有调试信息,使其更小。

opt也有一些类似的内容:

-strip-debug此选项使opt在应用其他优化之前从模块中删除调试信息。它与-strip基本相同,但确保首先进行调试信息的剥离。


21
我通过使用clang的-Wl,-s选项成功地完成了这个操作。 - Reinderien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接