Wo ist mein /usr/include/sys-Verzeichnis?

Wo ist mein /usr/include/sys-Verzeichnis?

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/sysVerzeichnis vorhanden ist. Das heißt, types.h, stat.h, usw. fehlen. Sie sind im include/linuxVerzeichnis 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.hbevor 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.

verwandte Informationen