2011-05-22 119 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