HAS_DEBUG标志是否应该在发布g ++可执行文件中出现?

时间:2014-08-22 22:52:50

标签: c++ mingw compiler-optimization objdump

我是一名大学生,在一些提高C ++性能的技巧中进行搜索。

我正在检查我的"发布" (编译器优化)可执行的GCC工具。当我使用objdump时,它显示了文件头:

C:\Users\Nicobook\Uni\TCC\TCCII\Fontes\Códigos\teste>c:\MinGW32\bin\objdump.exe -f main.exe    
main.exe:     file format pei-i386
architecture: i386, flags 0x0000013a:
EXEC_P, HAS_DEBUG, HAS_SYMS, HAS_LOCALS, D_PAGED
start address 0x004014f0

它有一个标志HAS_DEBUG,它应该有吗?我在启用优化的情况下测量运行时(我希望,请参阅下面的G ++标志),所以我想要最优化的二进制文件,但我认为它有调试信息。 有一种方法可以删除调试信息吗?

我使用的是MinGW32,G ++ 4.8.1和OBJDUMP 2.23.52。 我在G ++上使用以下标志:

C:\Users\Nicobook\Uni\TCC\TCCII\Fontes\Códigos\teste>c:\MinGW32\bin\g++.exe -O3 -Wall -Wextra -pedantic-errors -ansi --std=c++11 -o main.exe main.cpp

main.cpp是一个'hello world'测试程序,不是我测量的,而是具有相同的调试标志。提前谢谢......

1 个答案:

答案 0 :(得分:0)

要删除文件中的所有无关部分,您需要将其删除。只需strip main.exe即可完成此任务。

或者,您可以将代码与-s标志链接,从而完成相同的操作。如果您是从.cpp进行编译 - > .exe直接(例如使用您的命令行)然后将其放入该命令行将完成它。