wake-up-neo.com

Wo befindet sich sys/types.h?

Ich habe gerade herausgefunden, dass sich die <stdlib.h>- und <stdio.h>-Header im /usr/include-Ordner des Ubuntu-Servers befinden, aber ich finde sys/types.h nicht.

Und ich habe den Verdacht, dass der Compiler die Header-Datei im Ordner /usr/include nicht wirklich verwendet.

Stimmt das und wo befindet sich die Datei? 

20
mko

Meine Debian-Box (und hoffentlich Ubuntu hat sie nicht geschlachtet auch viel in ihrem Eifer) hat sie in /usr/include/sys/types.h.

Ihre beste Wette ist, zuerst auszuführen:

find /usr/include -name types.h

dann:

find / -name types.h

wenn Sie es nicht im ersten finden.

Beachten Sie jedoch, dass das Entwicklungsmaterial möglicherweise nicht einmal installiert ist. Ich würde ein Imaging einer Server-Box als Server verwenden, und es würde mich nicht überraschen, wenn der Compiler und eine Reihe von Andere Dinge waren nicht Teil der Standardinstallation (aber es gab viele Server-Dinge wie ftpd oder Apache und so weiter).

Wenn der Compiler es irgendwo findet und Sie nur nicht wissen, wo es ist, können Sie etwas verwenden wie:

echo "#include <sys/types.h>" | gcc -E -x c - | grep /types.h

um herauszufinden, woher es kommt.

Oder:

echo "#include <stdio.h>" | gcc -E -x c - | grep /stdio.h

für den anderen Header sind Sie besorgt.

Nebenbei: Die gcc Befehlszeile stoppt nach der Vorverarbeitungsphase (-E), erzwingt die Behandlung der Datei als C-Quellcode (-x c) und ruft das Programm von der Standardeingabe ab ( -), in diesem Fall aus der Anweisung echo.

Das letzte grep entfernt nur die unwichtigen Linien.

49
paxdiablo

Die Datei sys/types.h befindet sich am /usr/include/sys/types.h

wenn Sie diese Art von Fatal Error erhalten:

.../linux/linux_types.h:146:38: fatal error: /usr/include/sys/types.h: No
such file or directory

Fixiere mithilfe des folgenden Codes:

Sudo apt-get install build-essential flex libelf-dev libc6-dev-AMD64 binutils-dev libdwarf-dev
14
rascaL raajA

Wenn Sie einen Suchbefehl zur Verfügung haben, können Sie einfach locate verwenden:

-bash-3.2$ locate sys/types.h
/usr/include/sys/types.h
/usr/lib/syslinux/com32/include/sys/types.h
-bash-3.2$

Es ist der schnellste und einfachste Weg, dies zu tun.

6

Nur zum Nachschlagen bin ich auf meinem Debian-Rechner auf dieses Problem gestoßen

$ apt-file find /usr/include/sys/types.h
libc6-dev-i386: /usr/include/sys/types.h

libc6-dev-i386 ist das Paket, das ich scheinbar installieren muss

4
LaPingvino

Unter Linux sollte types.h in /usr/include/sys/types.h sein.

2
wallyk

In meiner Slackware musste ich glibc installieren, um dieses Problem zu lösen.