2012-06-17 18 views
5

mientras se realiza una compilación con g cruz ++ en una máquina Linux (Lubuntu 11.10) en modo detallado, I puede ver la lista de la forma predeterminada incluir directorios de cabecera:g ++ encabezado predeterminado incluye lista

#include <...> search starts here: 
/opt/eldk-4.2/usr/bin/../lib/gcc/powerpc-linux/4.2.2/include 
/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/powerpc-linux 
/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/backward 
/opt/eldk-4.2/usr/../ppc_4xx/usr/include 

la ejecución de la misma g ++ binario en otra máquina Linux (Lubuntu 12.10), me sale otra lista diferente, con menos elementos:

#include <...> search starts here: 
/opt/eldk-4.2/usr/bin/../lib/gcc/powerpc-linux/4.2.2/include 

y en la que algunos de los elments parece mal construida, como la siguiente:

ignoring nonexistent directory "/opt/ppc_4xx/usr/lib/gcc/powerpc-linux/includ../include/c++/4.2.2" 

El resultado es que algunos códigos compilados en el primer sistema no se compilan en el segundo porque no se encuentran algunos encabezados.

¿Por qué sucede esto ?. ¿De dónde viene esta lista? ¿Quién es responsable de construirlo ?. ¿Es posible cambiarlo fácilmente?

Cualquier ayuda es apreciada.

+1

Ejecutar como 'g ++ -v -H' y que le dirá mucho ... Por desgracia, –

Respuesta

5

Puede añadir directorios a la ruta de búsqueda predeterminada mediante el establecimiento de variables de entorno:

  • C_INCLUDE_PATH (para los archivos de cabecera C)
  • CPLUS_INCLUDE_PATH (para archivos de cabecera C++).

Alternativamente, you can create and edit specfile y colóquelo donde G ++ los busque. Puede verificar la ruta con strace gcc.

Additional documentation on specfiles on GCC page.

+0

no conozco ningún lugar donde estén almacenados los directorios predeterminados. Probablemente hayan sido integrados en el compilador. –

+0

Dudo que esté almacenado en el compilador, ya que la ejecución del mismo binario en diferentes máquinas produce un resultado diferente – Marda

+1

Está integrado en el compilador, pero las rutas están incorporadas como rutas relativas, por lo que son relativas a donde está el binario instalado –

0

tengo el problema con algunos exacta ELDK 4.2. Es muy probable que esto esté relacionado con algo que cambió en ubuntu 12.04 ya que el compilador ejecutó correctamente en la misma computadora antes de la actualización.

Mi problema es que se parece haber olvidado/usr

ignorando directorio que no existe "/opt/eldk-4.2/../ppc_82xx/usr/include"

Cabe

/opt/eldk-4.2/usr/../ppc_82xx/usr/include

Que funciona perfectamente en ubuntu 11.10.

He intentado tanto la instalación de ELDK de la ISO y la copia de la instalación de una versión de trabajo en Ubuntu 11.10

+1

Encontré esto, http://answerpot.com/showthread.php?3533926-Ubuntu+12.04+and+ELDK+4.1 –

+0

"Resolví" mi problema agregando la ruta faltante al archivo de especificaciones. Es un truco, pero. http://www.mingw.org/node/25. Cabe señalar el ELDK 4.2 trabajó en mi imagen ubuntu que fue la actualización de 11.04, pero no en un 12.04 recién instalado. Existe algún tipo de incompatibilidad con la forma en que se resuelven las rutas y los enlaces. Supongo que si un directorio no termina con/dará resultados diferentes en algún lugar de alguna biblioteca –

+0

No estoy seguro de que sea un hack, se necesita una solución aquí que aísle el entorno de compilación de su host. De lo contrario, se generará simplemente no ser repetible Una configuración de entorno para sus herramientas que se puede controlar con el proyecto es una necesidad. De hecho, la versión que controla sus herramientas también es un buen plan. – marko

Cuestiones relacionadas