Где находится sys/types.h?
Я только узнал, что заголовки <stdlib.h>
и <stdio.h>
находятся в папке /usr/include
на сервере Ubuntu, но я не нахожу sys/types.h
.
И я начинаю подозревать, что компилятор фактически не использует файл заголовка в папке /usr/include
.
Это правда, и где находится файл?
Ответы
Ответ 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 для решения этой проблемы.