最佳剥离符号的方法[英] Best way to strip off symbols

本文是小编为大家收集整理的关于最佳剥离符号的方法的处理方法,想解了最佳剥离符号的方法的问题怎么解决?最佳剥离符号的方法问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

上周我发布了Linux和Windows版本的应用程序.

和释放后,我们意识到符号没有剥离,我的经理认为(我不同意)它可能允许用户了解我们的算法.

无论如何,现在,我将不得不清理符号并重新释放应用程序.

我的问题,

  1. 在Linux中绘制符号的最佳方法是什么?
  2. 在Windows中剥离符号的最佳方法是什么?
在Windows上使用Visual C ++(和其他Microsoft编译器),符号不是二进制文件的一部分.相反,它们存储在名为"程序数据库"文件(.pdb文件)的单独文件中.只是不提供.pdb文件.

使用GNU工具链将使用strip删除二进制文件的符号.

其他推荐答案

为GNU工具链,有一个酷的手工雪橇:

objcopy --only-keep-debug yourprogram ../somepath/yourprogram.dbg
strip yourprogram
objcopy --add-gnu-debuglink=../somepath/yourprogram.dbg yourprogram
现在你可以zip zip你的程序进入(或把它包装成安装者或其他),它没有更多的调试符号.
但是:如果您启动调试器或运行像addr2line或obdump等工具,则该工具将(由于debuglink信息)自动知道在哪里找到符号并加载它们.

这很棒,因为它意味着您有一个在您的末尾有符号的好处,而不会将它们分发给用户.

本文地址:https://www.itbaoku.cn/post/358951.html