【问题标题】:automake output binaries bigger than the command-line compiled binsautomake 输出的二进制文件比命令行编译的 bin 大
【发布时间】:2012-01-09 17:58:43
【问题描述】:

对于我正在开发的一个小项目,我一直在通过命令行使用简单的编译。但是,随着它变大,我决定学习并使用 autoconf 和 automake 来编译它。

经过一些配置,我使用automake成功构建。但是我注意到输出二进制文件的大小比通过命令行使用 g++ 大。我尝试使用静态和动态库,结果是一样的。

我还尝试了一个简单的 hello world,它使用 automake 也比使用命令行编译更大。

所以,我尝试运行objdump -h:编译后的命令行返回了 27 个部分,另一方面,编译后的 automake 返回了相同的 27 个部分加上 7 个名为 debug_aranges 、debug_info 、debug_abbrev、debug_line、debug_loc、debug_ranges 的部分.所以我显然倾向于认为这与调试有关。

所以,任何人都知道这些部分的用途,如果它们是必要的,以及如何摆脱它们,那么可执行文件就更小了,便于分发。

【问题讨论】:

  • 我不太了解 automake,但似乎您正在通过 automake 脚本包含调试符号。尝试找到禁用它的 automake 选项。
  • 据此 - 尝试stripping 二进制文件;之后还大吗?
  • 是的!在两者上使用条带后,它们的尺寸相同。对不起,我不知道这个命令。我还意识到“问题”是 automake 在编译期间自动将 -g 参数放入 g++ 中,这实际上是 dtech 所说的调试符号。感谢您的帮助。
  • automake 编译时使用用户定义的 CFLAGS 配置时间,默认 CFLAGS 设置为“-g -O2”。你不应该改变你的 Makefile.am 来改变它,而是在你运行 configure 时分配 CFLAGS。

标签: c++ autoconf automake


【解决方案1】:

安装二进制文件时只需调用make install-stripinstall 将在安装过程中删除它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-07
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2021-07-31
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多