Подтвердить что ты не робот

Где находится sys/types.h?

Я только узнал, что заголовки <stdlib.h> и <stdio.h> находятся в папке /usr/include на сервере Ubuntu, но я не нахожу sys/types.h.

И я начинаю подозревать, что компилятор фактически не использует файл заголовка в папке /usr/include.

Это правда, и где находится файл?

4b9b3361

Ответ 1

В моем Debian поле (и, надеюсь, Ubuntu не слишком сильно забивает его в своем рвении) имеет его в /usr/include/sys/types.h.

Лучше всего сначала выполнить:

find /usr/include -name types.h

то

find / -name types.h

если вы не найдете его в первом.

Однако имейте в виду, что материал для разработки даже не может быть установлен. Я бы хотел, чтобы ядро ​​сервера отображалось в качестве сервера, и меня не удивило бы, если бы компилятор и куча других материалов не были частью установки по умолчанию (но у него было бы много таких серверных вещей, как ftpd или Apache и т.д.).

Если компилятор находит его где-то, и вы просто не знаете, где, вы можете использовать что-то вроде:

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

чтобы узнать, откуда он его получает.

Или:

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

для другого заголовка, о котором вы беспокоитесь.

Кроме того, команда gcc останавливается после фазы предварительной обработки (-E), заставляет файл обрабатываться как исходный код C (-x c) и извлекает программу из стандартного ввода (-), в этом случае из оператора echo.

Финал grep просто удаляет несущественные строки.

Ответ 2

Файл sys/types.h находится в /usr/include/sys/types.h

если u получает этот вид Неустранимая ошибка:

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

Исправить, используя следующий код:

sudo apt-get install build-essential flex libelf-dev libc6-dev-amd64 binutils-dev libdwarf-dev

Ответ 3

Если у вас есть доступная команда, вы можете просто использовать locate:

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

Это самый быстрый и простой способ сделать это.

Ответ 4

В Linux types.h должен находиться в /usr/include/sys/types.h.

Ответ 5

Просто для справки в будущем, я столкнулся с этой проблемой на моей машине debian, и оказалось, что в моем случае

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

libc6-dev-i386 - это пакет, который мне, по-видимому, нужно установить

Ответ 6

В моем Slackware мне понадобилось установить glibc для решения этой проблемы.