更改 GNU 编译器中的 -g 标志使 C++ 可执行 [重复]
Posted
技术标签:
【中文标题】更改 GNU 编译器中的 -g 标志使 C++ 可执行 [重复]【英文标题】:Changes -g flag in GNU compiler makes in executable for c++ [duplicate] 【发布时间】:2013-08-08 17:52:16 【问题描述】:添加 -g 标志后实际上会对可执行文件进行哪些更改?
【问题讨论】:
我想这个问题已经在这里回答了link 【参考方案1】:主要变化将是二进制文件大小的增加,因为它现在将包含额外的调试信息。根据您要构建的目标,它可能(或不)在执行期间产生任何其他影响。例如,在生成 ELF 时,所有调试信息都保存在单独的部分中,除非在调试器中运行,否则甚至不需要将其加载到内存中(因此即使二进制文件更大,也不需要更多的实际内存来运行)
【讨论】:
请问ELF代表什么? @StephenJacob:Executable and Linkable Format。在包括linux在内的一些平台上是二进制格式。 罗德里格斯:非常感谢【参考方案2】:基本上,它包含有关程序源的更多信息,否则这些信息会在编译过程中丢失。这包括更多的符号名称,以及机器代码对应的行号。请参阅this reference 了解更多详情。
【讨论】:
【参考方案3】:调试信息被添加到您的可执行文件中。看到这个link。
【讨论】:
以上是关于更改 GNU 编译器中的 -g 标志使 C++ 可执行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
用于 Ivy Bridge 架构的 GNU Fortran 编译器优化标志