Не удается отключить gcc-оптимизатор, Makefile от automake - PullRequest
9 голосов
/ 15 марта 2012

Я пытаюсь получить ZBar в сеансе отладки. Я могу это сделать, но не могу отключить оптимизатор, поэтому мой сеанс отладки неожиданно перепрыгивает, и многие переменные помечены как optimized-out в Eclipse Indigo. Я бегу в Ubuntu.

Я попытался добавить -O0 как можно ближе к любому вызову gcc в Makefiles, так как последний -O является действующим. Я использовал -Q --help = оптимизаторы, чтобы найти то, что нужно искать, но его вывод немного странный:

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 в нескольких местах. У меня нет опыта работы с automake, который используется ZBar. Я пытаюсь избежать создания собственного Makefile с нуля. Есть ли какие-либо предложения о том, где искать отключение оптимизатора? Я уже искал в Makefiles все -O и любые -f, связанные с оптимизацией; Я не нашел ни одного. Проект был очищен после попыток модификации Makefile.

1 Ответ

19 голосов
/ 15 марта 2012

Отключение оптимизаций проще всего выполнить при запуске configure или при запуске make. Или

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

или

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

должен делать то, что вы хотите. Если вы установите CFLAGS / CXXFLAGS во время конфигурирования, эти значения будут использоваться для всех вызовов make, которые не переопределяют их, в то время как установка их во время выполнения является разовой.

...