无法从automake关闭gcc优化器,Makefile

时间:2012-03-15 17:47:32

标签: gcc compiler-optimization automake zbar-sdk

我想在调试会话中获取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修改尝试完成后清理了项目。

1 个答案:

答案 0 :(得分:19)

运行configure或运行make时,最容易实现禁用优化。任

configure CFLAGS='-g -O0' CXXFLAGS='-g -O0'

make CFLAGS='-g -O0' CXXFLAGS='-g -O0' clean all

应该做你想做的事。如果在配置期间设置CFLAGS / CXXFLAGS,那些值将用于不覆盖它们的所有make调用,而在make时设置它们是一次性交易。