我正在使用eclipse中的autotools为运行OpenWRT的嵌入式系统构建程序。我把它全部设置为调试,这是有效的。如果我将已编译的可执行文件发送给某人,它是否会像未编译用于调试的那样高效?
答案 0 :(得分:1)
生成的可执行文件的效率(对于相同的给定源代码)取决于编译器和优化标志。
如果仅使用gcc -g
和编译代码而不使用任何优化标志,则比使用优化标志(例如gcc -O2
)编译它要慢得多。 / p>
如果需要,您可以同时混用-O2
和-g
。添加-g
不会减慢可执行文件的速度(但会添加一些调试信息)。调试这样的可执行文件时,gdb
调试器可能会显示一些奇怪的行为(因为优化是内联,重新排序指令等等)。
您可能会发现使用gcc -O1 -g
进行编译是一种恰当的折衷方案。最近的GCC(即4.8)甚至添加了-Og
选项(优化调试),即使用gcc -Og -g
进行编译。