我想在调试会话中获取ZBar。我能够这样做,但我无法让优化器关闭,所以我的调试会话意外跳转,许多变量在Eclipse Indigo中被标记为optimized-out
。我在Ubuntu中运行。
我尝试尽可能在Makefile中的任何gcc调用中添加-O0,因为最后一个-O是代理的。我使用-Q --help = optimizers来查找要查找的内容,但它的输出有点奇怪:
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./zbar -I./include -O0 -O0 -Q --help=optimizers -Wall -Wno-parentheses -O0 -g -O0 -Q --help=optimizers -MT zbar/zbar_libzbar_la-config.lo -MD -MP -MF zbar/.deps/zbar_libzbar_la-config.Tpo -c zbar/config.c -fPIC -DPIC -o zbar/.libs/zbar_libzbar_la-config.o
The following options control optimizations:
make[1]: *** [zbar/zbar_libzbar_la-config.lo] Error 1
-O<number>
make: *** [all] Error 2
-Ofast
-Os
-falign-functions [disabled]
-falign-jumps [disabled]
-falign-labels [disabled]
-falign-loops [disabled]
-fasynchronous-unwind-tables [enabled]
-fbranch-count-reg [enabled]
-fbranch-probabilities [disabled]
-fbranch-target-load-optimize [disabled]
-fbranch-target-load-optimize2 [disabled]
-fbtr-bb-exclusive [disabled]
-fcaller-saves [disabled]
-fcombine-stack-adjustments [disabled]
-fcommon [enabled]
-fcompare-elim [disabled]
etc...
显然,我一直把-O0放在几个地方。我对使用ZBar的automake没有任何经验。我试图避免从头开始创建自己的Makefile,是否有关于在何处查看禁用优化器的建议?我已经在Makefile中搜索了所有-O
和与优化相关的-f
的所有内容;我没找到。在Makefile修改尝试完成后清理了项目。
答案 0 :(得分:19)
运行configure或运行make时,最容易实现禁用优化。任
configure CFLAGS='-g -O0' CXXFLAGS='-g -O0'
或
make CFLAGS='-g -O0' CXXFLAGS='-g -O0' clean all
应该做你想做的事。如果在配置期间设置CFLAGS / CXXFLAGS,那些值将用于不覆盖它们的所有make调用,而在make时设置它们是一次性交易。