2011-05-22 182 views
5

gcc和AMD Open64 opencc都有一个-s选项来“去掉符号表和重定位信息”。到目前为止,我还无法在Clang/LLVM中找到相同的选项。它存在吗?gcc vs. clang:符号剥离

+1

我想你应该使用'objcopy'(来自binutils)来分割符号。这样,如果您的某个用户遇到崩溃,您可以方便地使用它们,但不必将它们包含在您提供给用户的二进制文件中。 – 0xC0000022L 2011-05-22 02:29:47

+0

看起来像东西错过了一个场合。请填写LLVM bugzilla中的PR。谢谢! – 2011-05-22 05:59:07

+0

@安顿好吧,我已经提交http://llvm.org/bugs/show_bug.cgi?id=9986。 – Reinderien 2011-05-22 18:55:15

回答

6

您可以使用binutils的strip实用程序。

实际上,一个LLVM-LD有这个选项http://llvm.org/cmds/llvm-ld.html

-strip一切,-s地带的所有调试和符号信息从可执行 使其变小。

-strip-debug,-S将所有调试信息从可执行文件剥离到 使其更小。

选择有东西太多:

-strip调试 这个选项会选择将其他 优化前剥离从模块的调试信息。它基本上与-strip相同,但它确保首先完成调试信息的剥离。

+10

我最终通过传递clang'-Wl,-s'来有效地完成这项工作。 – Reinderien 2011-05-22 02:57:47