11

デバッグ セッションでZBarを取得しようとしています。そうすることはできますが、オプティマイザーをオフにすることができないため、デバッグ セッションが予期せずジャンプし、多くの変数がoptimized-outEclipse Indigo のようにラベル付けされます。私は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 の変更が試みられた後、プロジェクトは消去されました。

4

1 に答える 1

28

最適化の無効化は、configure を実行するとき、または make を実行するときに最も簡単に行うことができます。また

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

また

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

あなたがしたいことをするべきです。configure 中に CFLAGS/CXXFLAGS を設定すると、それらの値は上書きされない make のすべての呼び出しに使用されますが、make 時にそれらを設定するのは 1 回限りです。

于 2012-03-15T17:50:56.750 に答える