2012-06-17 8 views
5

Während eine Zusammenstellung mit Quer g ++ in einer Linux-Maschine durchführen (Lubuntu 11.10) im ausführlichen Modus, kann ich die Liste der Standard-Include Header Verzeichnisse sehen:g ++ Standard-Header enthalten Liste

#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 

Ausführen der gleichen g ++ binär in einer anderen Maschine Linux (Lubuntu 12.10), habe ich wieder eine neue Liste, mit weniger Elementen:

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

und konstruiert, in dem einige der elments schlecht scheinen, wie folgt aus:

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

Das Ergebnis ist, dass einige Code-Kompilierung auf dem ersten System nicht kompiliert wird, da einige Header nicht gefunden werden.

Warum passiert das ?. Woher kommt diese Liste? Wer ist verantwortlich für den Bau? Ist es möglich, es leicht zu ändern ?.

Jede Hilfe wird geschätzt.

+1

Run als 'g ++ -v Installation -H' und es wird Ihnen viel erzählen ... –

Antwort

5

Sie können Verzeichnisse auf den Standard-Suchpfad hinzufügen von Umgebungsvariablen:

  • C_INCLUDE_PATH (für C-Header-Dateien)
  • CPLUS_INCLUDE_PATH (für C++ Header-Dateien).

Alternativ you can create and edit specfile und platzieren Sie es, wo G ++ nach ihnen sucht. Sie können den Pfad mit strace gcc überprüfen.

Additional documentation on specfiles on GCC page.

+0

Leider I kenne keinen Ort, an dem die Standardverzeichnisse gespeichert sind. Sie wurden wahrscheinlich in den Compiler eingebaut. –

+0

Ich bezweifle, dass es in den Compiler gespeichert wird, da die Ausführung derselben Binärdatei in anderen Maschinen zu einem anderen Ergebnis führt – Marda

+1

Es ist in den Compiler integriert, aber die Pfade sind als relative Pfade integriert, so dass sie relativ zu der Binärdatei sind Eingerichtet. –

0

Ich habe das exakt ein Problem ELDK mit 4.2. Dies hängt sehr wahrscheinlich mit etwas zusammen, das sich in ubuntu 12.04 geändert hat, da ich den Compiler vor dem Upgrade auf demselben Computer ausgeführt habe.

Mein Problem ist, dass vergessen zu haben, scheint/usr

nicht vorhandenes Verzeichnis zu ignorieren "/opt/eldk-4.2/../ppc_82xx/usr/include"

Es sollte

sein

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

Das funktioniert perfekt auf Ubuntu 11.10.

Ich habe versucht, beide ELDK von der ISO und das Kopieren der Installation von einer Arbeitsversion in ubuntu 11.10

+1

Ich fand dies, http://answerpot.com/showthread.php?3533926-Ubuntu+12.04+and+ELDK+4.1 –

+0

Ich "löste" mein Problem, indem ich den fehlenden Pfad zur Specs-Datei hinzufügte. Es ist ein Hack, aber. http://www.mingw.org/node/25. Es sollte die ELDK 4 beachtet werden.2 funktionierte auf meinem Ubuntu-Image, das von 11.04 aktualisiert wurde, aber nicht auf einem neu installierten 12.04. Es gibt eine Art Inkompatibilität mit der Art und Weise, wie Pfade und Links aufgelöst werden. Meine Vermutung ist, dass, wenn ein Directo nicht endet/irgendwo in irgendeiner Bibliothek andere Ergebnisse erzielt werden. –

+0

Ich bin mir nicht sicher, ob das ein Hack ist - hier ist eine Lösung erforderlich, die die Build-Umgebung von ihrem Host isoliert - sonst wird Builds einfach nicht wiederholbar sein. Eine Umgebungskonfiguration für Ihre Tools, die versionsgesteuert mit dem Projekt sein kann, ist ein Muss. Tatsächlich ist Version, die Ihre Werkzeuge steuert, ein guter Plan auch. – marko

Verwandte Themen