2012-06-17 11 views
5

Podczas wykonywania kompilację z poprzecznym g ++ w maszynie Linux (LUBUNTU 11.10) w trybie opisowym, widzę listę domyślnych Dołącz nagłówek katalogi:g ++ domyślny nagłówek zawierający wykaz

#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 

wykonaniem samego g ++ binarne w innym komputerze z systemem Linux (LUBUNTU 12.10), mam inną inną listę, z mniejszą ilością elementów:

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

iw których niektóre elments wydają złe skonstruowana, jak następuje:

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

Powoduje to, że niektóre kompilacje kodu w pierwszym systemie nie kompilują się na sekundę, ponieważ niektóre nagłówki nie zostały znalezione.

Dlaczego tak się dzieje? Skąd pochodzi ta lista ?. Kto jest odpowiedzialny za jego budowę ?. Czy można to łatwo zmienić ?.

Każda pomoc jest doceniana.

+1

uruchomić go jako 'g ++ -v -H' i powie to dużo ... –

Odpowiedz

5

Możesz dodać katalogi do domyślnej ścieżce wyszukiwania poprzez ustawienie zmiennych środowiskowych:

  • C_INCLUDE_PATH (dla plików C nagłówka)
  • CPLUS_INCLUDE_PATH (dla plików nagłówkowych C++).

Alternatywnie, you can create and edit specfile i umieść go tam, gdzie szuka ich G ++. Możesz sprawdzić ścieżkę za pomocą strace gcc.

Additional documentation on specfiles on GCC page.

+0

Niestety nie znamy żadnego miejsca, w którym przechowywane są domyślne katalogi. Zostały prawdopodobnie wbudowane w kompilator. –

+0

Wątpię, czy jest on zapisany w kompilatorze, ponieważ wykonywanie tego samego pliku binarnego na różnych maszynach daje inny wynik. – Marda

+1

Jest wbudowane w kompilator, ale ścieżki są wbudowane jako ścieżki względne, więc są względne względem miejsca, w którym plik binarny jest zainstalowany. –

0

mam dokładnie ten jakiś problem korzystając ELDK 4.2. Jest to prawdopodobnie związane z czymś, co zmieniło się w Ubuntu 12.04, ponieważ miałem kompilator działający dobrze na tym samym komputerze przed aktualizacją.

Moim problemem jest to, że wydaje się zapominać/usr

ignorując katalogu nieistniejącego "/opt/eldk-4.2/../ppc_82xx/usr/include"

Należy

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

Który działa idealnie na ubuntu 11.10.

Próbowałem zarówno instalowania ELDK z ISO i kopiowanie instalacji z wersji roboczej w Ubuntu 11.10

+1

Znalazłem to, http://answerpot.com/showthread.php?3533926-Ubuntu+12.04+i+ELDK+4.1 –

+0

"Rozwiązałem" mój problem, dodając brakującą ścieżkę do pliku specyfikacji. To jest hack, ale. http://www.mingw.org/node/25. Należy zauważyć, że ELDK 4.2 działało na moim obrazie ubuntu, który był uaktualniony od 11.04, ale nie na świeżo zainstalowanym 12.04. Istnieje niekompatybilność z tym, jak ścieżki i linki są rozwiązywane. Domyślam się, że jeśli directoy nie kończy się na/to da różne wyniki gdzieś w jakiejś bibliotece –

+0

Nie jestem pewien, czy to hack - tutaj potrzebne jest rozwiązanie, które izoluje środowisko kompilacji od hosta - inaczej kompiluje po prostu nie można powtarzać. Konieczna jest konfiguracja środowiska dla narzędzi, które można kontrolować w wersji z projektem. W rzeczywistości, wersja kontrolująca narzędzia jest również dobrym planem. – marko