2012-04-18 8 views
5

Quiero dejar que mi gcc siempre agregue algunos indicadores de forma predeterminada, ¿hay alguna manera de hacerlo?Agregue algunos indicadores de forma predeterminada a gcc (preferiblemente usando el archivo de especificaciones)

Básicamente tengo algunos indicadores que paso cada vez que invoco gcc, por ejemplo (pero no limitado a) -g (para que tenga información de depuración).

Hay varias soluciones, pero son feas:

  1. alias g++=..., pero no me gusta este enfoque;
  2. Escriba un script que se ajuste al g ++, similar a 1;
  3. ...

yo preferiría simplemente modificando el fichero de especificaciones para que todo sea transparente.

+0

posible duplicado de [¿Cómo configurar gcc 4.3 archivo de especificaciones predeterminado?] (Http://stackoverflow.com/questions/5778449/how-to-set-gcc-4-3-default-specs -file) –

Respuesta

1

El problema con la modificación del archivo de especificaciones es que si cambia de opinión sobre alguna opción, no puede cancelarla desde la línea de comandos; tienes que ir a modificar el archivo de especificaciones. También debe recordar volver a modificar el nuevo archivo de especificaciones cuando actualice el compilador.

Además, ¿con qué frecuencia ejecuta el compilador desde la línea de comandos? Sé que casi la única vez que lo hago directamente es cuando tengo que hackear temporalmente una línea de comando y no puedo molestarme en averiguar cómo arreglar las opciones del compilador en el archivo MAKE, así que copio la línea de compilación del salida de hacer y luego ejecutar el compilador. Un problema con alias es que no funcionará dentro de un makefile. Entonces, para mí, el problema se reduciría a garantizar que las opciones del compilador se usen en cada archivo MAKE.

+1

Existen casos de uso legítimos para esto más allá de llamarlo desde la línea de comando. Es posible que desee enseñarle al controlador de GCC dónde encontrar una libc alternativa, por ejemplo ... o encabezados alternativos. O agregue encabezados "predeterminados". – 0xC0000022L

7

Ejecute strace gcc | grep specs para ver dónde está buscando el archivo de especificaciones, luego vaya allí y ejecute gcc -dumpspecs > specs. Ahora tiene un archivo de especificaciones listo para editar. Utilice esta referencia: https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html

+3

Necesita agregar 2> y 1 justo antes de '|', ya que las salidas de strace a stderr. Probé la idea en mi máquina virtual agregando un archivo de especificaciones modificado en la ubicación sugerida por la salida strace, y luego ejecutando g ++ -v en una cpp ficticia, observando las opciones esperadas. – Syncopated

+0

¿Puede mostrarnos un ejemplo? P.ej. cómo agregar una opción de vinculador predeterminada, eso está ahí todo el tiempo? ¿O una opción de compilador de C++ o una opción de compilador de C? – Calmarius

+0

Este archivo de especificaciones es bastante complejo desde el primer vistazo. Con un montón de% marks y {} s, ¿puede mostrarnos un ejemplo de cómo agregar opciones predeterminadas al enlazador, al compilador de C o al compilador de C++? – Calmarius

Cuestiones relacionadas