Ich habe vor Kurzem ein Upgrade von Kubuntu 12.04 auf 13.04 durchgeführt, eine vollständige Neuinstallation.
Ich verwende gcc 4.7.3. Ich habe einige Programme kompiliert und festgestellt, dass kein /usr/include/sys
Verzeichnis vorhanden ist. Das heißt, types.h
, stat.h
, usw. fehlen. Sie sind im include/linux
Verzeichnis vorhanden, aber nicht include/sys
.
Was ist los?
Antwort1
Wenn du Ubuntu auf 64-Bit nutzt (auf einem 32-Bit-System kann ich gerade nicht genau sagen), dann ist das Verzeichnis aus der Frage:
/usr/include/x86_64-linux-gnu/sys
Wenn Sie diese Informationen nun haben, können Sie symbolische Links zu diesen Dateien erstellen, wenn Sie sie wirklich an diesem Speicherort benötigen ( /usr/include/sys
), indem Sie Folgendes auf einem Terminal verwenden:
sudo ln -s /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/sys/types.h
sudo ln -s /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/sys/stat.h
# ...etc
Antwort2
Installieren Sie libc6-dev-amd64, wenn Sie mit einem 64-Bit-Linux arbeiten. Geben Sie den folgenden Befehl im Ubuntu-Terminal ein:
sudo apt-get install libc6-dev-amd64
Antwort3
Schauen wir uns an, was der Standard-Include-Suchpfad von gcc ist. Vondiese Antworterhalten wir diesen Befehl:
gcc -xc -E -v -
Am Ende der Ausgabe sehe ich Folgendes auf meinem Computer:
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
Beachten Sie die vorletzte Zeile. Das bedeutet, dass #include <sys/stat.h>
gcc beim Kompilieren einer C-Datei mit nach sucht, /usr/include/x86_64-linux-gnu/sys/stat.h
bevor es versucht /usr/include/sys/stat.h
, ohne dass wir einen symbolischen Link erstellen müssen.
Antwort4
Da meine Architektur amd64 ist, gibt es kein libc6-dev-amd64
. Das zu installierende Paket ist libc6-dev-i386
.
Dadurch wurde die Abhängigkeit von einem CPAN-Paket behoben.