2010-06-29 8 views
13

He cambiado de gcc versión 4.0.3 a 4.3.3 y me he dado cuenta de que -mfpmath estaba configurado en sse de forma predeterminada en gcc 4.3.3. Esto realmente causó errores en mi aplicación. En 4.0.3 el -mfpmath fue 387.gcc 4.3.3 opciones del compilador habilitadas de forma predeterminada

Quiero saber cómo puedo obtener todas las opciones predeterminadas habilitadas por gcc para una versión determinada. ¿Cómo puedo vaciar el conjunto de todas las opciones utilizadas por gcc durante la compilación? Esto me permite comparar la versión 4.0.3 vs 4.3.3.

En general, será grande si puedo conocer una lista completa de las cosas necesitan ser revisados ​​antes de ir para un cambio de versión de gcc. (Como esto no tiene efecto sobre el rendimiento y la funcionalidad.)

Respuesta

2
  1. La versión que tengo aquí de gcc 4.3.3 no tiene el comportamiento del que te quejas. Lo compilé yo mismo, así que estoy bastante seguro de que debe haber otra razón para el cambio que está viendo, además de la versión de gcc (como compilar para 64 bits que siempre ha usado AFRIR sse).

  2. gcc tiene notas de la versión que notifican cambios de comportamiento. Están empacados con la distribución de fuente gcc y están disponibles en la web. Para gcc 4.3 ver http://gcc.gnu.org/gcc-4.3/changes.html.

22

gcc -v -Q (archivoEntrada)

Con sólo una pequeña c básica o un archivo CPP como un archivo de entrada. Debería darle una gran lista de todas las opciones pasadas a gcc por defecto, una de ellas podría estar causando que sse fp math esté habilitada.

+0

¿Cuál es la diferencia entre las dos salidas que vienen con gcc -Q -v: "opciones pasadas" y "opciones habilitadas"? – Maximilian

17

Además de compilar un archivo específico -Q -v, que genera la lista de opciones aprobadas y aprobadas, así como muchas otras versiones, configuración e información de temporización, también puede usar gcc -Q --help=target para listar el objetivo predeterminado específico opciones del compilador:

$ gcc --version | head -1 
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 
$ gcc -Q --help=target 
The following options are target specific: 
    -m128bit-long-double     [disabled] 
    -m32         [disabled] 
    -m3dnow        [disabled] 
    -m3dnowa        [disabled] 
    -m64         [enabled] 
    -m80387        [enabled] 
    -m8bit-idiv       [disabled] 
    -m96bit-long-double     [enabled] 
    -mabi= 
    -mabm         [disabled] 
    -maccumulate-outgoing-args   [disabled] 
    -maes         [disabled] 
    -malign-double      [disabled] 
    -malign-functions= 
    -malign-jumps= 
    -malign-loops= 
    -malign-stringops      [enabled] 
    -mandroid        [disabled] 
    -march=        x86-64 
... 

incluir también una lista de opciones de ensamblador y enlazador específicos de la diana (pero no constituyen actualmente sus ajustes por defecto), utilice --target-help en lugar de --help=target.

1

Además de -Q --help=target para opciones específicas de destino, puede usar -Q -O<n> --help=optimize para mostrar qué pasos del optimizador están activados o desactivados en un nivel de optimización determinado. -Q también parece funcionar por sí mismo con otros argumentos --help=<blah> también.

Cuestiones relacionadas