2012-03-15 11 views
9

Estoy tratando de obtener ZBar en una sesión de depuración. Puedo hacerlo, pero no puedo hacer que el optimizador se apague, por lo que mi sesión de depuración salta inesperadamente y muchas variables están etiquetadas como optimized-out en Eclipse Indigo. Me estoy ejecutando en Ubuntu.No se puede desactivar el optimizador de gcc, Makefile de automake

He intentado agregar -O0 tan a la derecha en cualquier llamada gcc en los Makefiles como sea posible, ya que el último -O es el que está actuando. Solía ​​-Q --help = optimizadores para encontrar lo que se busca, pero su producción es un poco extraño:

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... 

Obviamente, he estado poniendo -O0 en varios lugares. No tengo ninguna experiencia con automake, que es utilizado por ZBar. Estoy tratando de evitar tener que hacer mi propio Makefile desde cero, ¿hay alguna sugerencia sobre dónde buscar para desactivar el optimizador? Ya he buscado los Makefiles para todos los -O y -f relacionados con la optimización; No encontré ninguno. El proyecto se limpió después de que se realizaron los intentos de modificación de Makefile.

Respuesta

18

La optimización de la desactivación se puede realizar más fácilmente cuando se ejecuta configure o cuando se ejecuta make. De cualquier

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

o

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

debe hacer lo que quiera. Si configura CFLAGS/CXXFLAGS durante la configuración, esos valores se usarán para todas las invocaciones de make que no los anulen, mientras que configurarlos en make time es una operación única.

+2

Ninguno tiene un efecto. Tenga en cuenta que no soy el autor del código, y simplemente estoy tratando de completar un análisis de algoritmo. Poner el -O0 con la llamada a hacer pone ese -O0 delante de cualquier otro indicador para permitir la optimización, por lo que no es efectivo. No veo ningún indicador de optimización en las miles de líneas del código Makefile ... – vlad417

+0

CFLAGS debe ser el último elemento establecido en COMPILE en el archivo MAKE, por lo tanto, a menos que el mantenedor del paquete supere su intento de establecer CFLAGS (que debe informarse como un error) su configuración debe ser la última. Si hace "CFLAGS = -esta opción-es-un-error", ¿esa opción aparece durante la compilación? –

+0

Cuando agrego el flag falso, obtengo: 'gcc: error: opción no reconocida '-this-option-is-an-error'' – vlad417

Cuestiones relacionadas