为什么编译出来的程序大小,release的会比debug的大近一倍?

wsy24680 2017-06-20 11:31:10
先说一下release和debug编译选项不同的地方,如下:

debug:
CXXFLAGS += -D_DEBUG -O0 -gdwarf-2
CXXFLAGS += -Werror -Wextra -Wunreachable-code -Wsign-compare -Wfloat-equal -Wcast-align -Winline -Wcast-qual -Wundef -Wredundant-decls

release:
CXXFLAGS += -DNDEBUG -O2

各自经过G++编译后,发现debug的大约是162M,而release的却有253M

我一直的理解是release一定会 比debug小很多,结果有点意外
这是正常的么?是我一直的理解就是错误的么?
求解释!
...全文
749 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ipqtjmqj 2017-06-20
  • 打赏
  • 举报
回复
引用 3 楼 wsy24680 的回复:
[quote=引用 2 楼 lgbxyz 的回复:] 正常吧, release是 O2优化, 很多优化选项都是空间换时间的优化, O2比O2多了几十个优化选项, 有兴趣的可以看一下gcc的用户手册. 另外,release 版本 通常会用strip命令去掉调试信息
谢谢你 还有一个不明白的是-gdwarf-2这个选项的作用到底是什么,查了半天还是没明白[/quote] gdwarf-version Produce debugging information in DWARF format (if that is supported). The value of version may be either 2, 3, 4 or 5; the default version for most targets is 4. DWARF Version 5 is only experimental. Note that with DWARF Version 2, some ports require and always use some non-conflicting DWARF 3 extensions in the unwind tables. Version 4 may require GDB 7.0 and -fvar-tracking-assignments for maximum benefit. GCC no longer supports DWARF Version 1, which is substantially different than Version 2 and later. For historical reasons, some other DWARF-related options (including -feliminate-dwarf2-dups and -fno-dwarf2-cfi-asm) retain a reference to DWARF Version 2 in their names, but apply to all currently-supported versions of DWARF. https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
wsy24680 2017-06-20
  • 打赏
  • 举报
回复
引用 2 楼 lgbxyz 的回复:
正常吧, release是 O2优化, 很多优化选项都是空间换时间的优化, O2比O2多了几十个优化选项, 有兴趣的可以看一下gcc的用户手册. 另外,release 版本 通常会用strip命令去掉调试信息
谢谢你 还有一个不明白的是-gdwarf-2这个选项的作用到底是什么,查了半天还是没明白
LubinLew 2017-06-20
  • 打赏
  • 举报
回复
正常吧, release是 O2优化, 很多优化选项都是空间换时间的优化, O2比O2多了几十个优化选项, 有兴趣的可以看一下gcc的用户手册. 另外,release 版本 通常会用strip命令去掉调试信息
wsy24680 2017-06-20
  • 打赏
  • 举报
回复
再补上两者一样的编译选项: CXXFLAGS = -std=c++11 -ggdb -fPIC -Wall CXXFLAGS += -Wno-reorder -Wno-unused-parameter -Wno-ignored-qualifiers 我都加了调试
赵4老师 2017-06-20
  • 打赏
  • 举报
回复
为什么不研究gcc/g++源代码相关片断呢?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧