2011-04-25 4 views
14

Cuando se utiliza la versión de gcc 4.3.2, veo cómo generar las especificaciones usando:Cómo configurar el archivo especificación predeterminada de gcc 4.3?

$ /usr/local/gcc-4.3.2/bin/gcc -v 
Using built-in specs 

Ahora cambiando al mismo directorio que libgcc:

cd /usr/local/gcc-4.3.2/lib/gcc/x86_64-unknown-linux-gnu/4.3.2 
/usr/local/gcc-4.3.2/bin/gcc -dumpspecs > specs 

tengo un fichero de especificaciones poblada que pueda modificar. Sin embargo, una vez hecho esto todavía veo que:

$ /usr/local/gcc-4.3.2/bin/gcc -v 
Using built-in specs 

¿Cómo le digo gcc para usar ese fichero de especificaciones por defecto en lugar de obligarme a pasar un parámetro -specs cada compilar? Me gustaría que coincide con otro sistema que tengo en la que sale el siguiente:

$ /usr/local/gcc-4.3.2/bin/gcc -v 
Reading specs from /usr/local/gcc-4.3.2/lib/gcc/i686-pc-linux-gnu/4.3.2/specs</code> 

Como se puede ver, la principal diferencia entre los dos sistemas es que la configuración actual es de 32 bits y ahora estoy tratando de coincide con eso en un sistema de 64 bits. La versión de Linux es diferente y estoy compilando la misma versión de gcc. (Con ambos sistemas, gcc 4.3.2 es la segunda instalación de gcc, con 4.1.2 siendo utilizado para compilar 4.3.2)

+1

Pruebe 'strace gcc 2> & 1 | grep -i spec' para ver dónde busca el archivo. –

+0

@Johannes Schaub - litb No da ningún resultado, mientras que el sistema de trabajo da la ruta al archivo de especificaciones. Tampoco da resultados al ejecutar ese comando para la versión 4.1.2 de gcc ubicada en/usr/bin. (El sistema de trabajo proporciona rutas para las versiones 4.3.2 y 4.1.2 del compilador, aunque el 4.1.La versión 2 tiene "(No hay tal archivo o directorio)" ya que está usando las características incorporadas.) – Gary

+1

@Johannes Schaub - litb Scratch that. Strace no fue instalado. Parece que está intentando acceder a '/ usr/local/include/x86_64-unknown-linux-gnu/4.3.2/specs','/usr/local/include/specs', '/ usr/lib/gcc/x86_64 -unknown-linux-gnu/4.3.2/specs', '/ usr/local/include /../../ x86_64-unknown-linux-gnu/lib/specs','/usr/local/include /. ./../ x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/4.3.2/specs', o '/usr/local/gcc-4.3.2/lib/gcc/x86_64-unknown -linux-gnu/specs', todos los cuales fallan. – Gary

Respuesta

0

¡Usted reconstruye gcc con su archivo de especificaciones como parte de la compilación!

Una solución más simple es crear un alias:

alias gcc_Gary gcc -specs /<folder With Specs File>/newSpecsFile 
+3

No creo que un alias funcione en shells no interactivos como Make uses. –

5

Como insinuado por la sugerencia strace de Johannes Schaub - litb, que era un problema con el lugar donde el compilador estaba buscando el archivo. Resultó que la instalación que no funcionaba tenía una variable de entorno establecida en .bashrc que causaba la confusión.

La ubicación correcta para el archivo de especificaciones es de hecho el mismo directorio en el que se encuentra libgcc. Solo asegúrese de que está buscando allí.

+2

Puedes aceptar tu propia respuesta –

+0

@Gary, tengo curiosidad ... ¿qué variable env estaba causando el problema? –

1

que utilizan esta línea de comandos:

/usr/bin/set-gcc-default-3.sh i686-pc-mingw32

pero es probable que desee:

/usr/bin/set-gcc-default-4.sh i686-pc-linux-gnu

(Nota del - 4 en lugar de -3)

Este se construye utilizando las "alternativas" cosas, por favor ver

/usr/sbin/alternatives.exe --help

y también ver las páginas tal como http://linux.about.com/library/cmd/blcmdl8_alternatives.htm

+0

Esto parece interesante. ¿GCC proporciona los scripts 'set-gcc-default- *'? Parece que no lo tengo en un dispositivo Linaro. – jww

Cuestiones relacionadas