我是一名大学生,在一些提高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'测试程序,不是我测量的,而是具有相同的调试标志。提前谢谢......
答案 0 :(得分:0)
要删除文件中的所有无关部分,您需要将其删除。只需strip main.exe
即可完成此任务。
或者,您可以将代码与-s
标志链接,从而完成相同的操作。如果您是从.cpp
进行编译 - > .exe
直接(例如使用您的命令行)然后将其放入该命令行将完成它。