Где находится мой каталог /usr/include/sys?

Где находится мой каталог /usr/include/sys?

Недавно я обновился с Kubuntu 12.04 до 13.04, полностью переустановив.

Используя gcc 4.7.3. Я скомпилировал несколько программ, чтобы обнаружить, что каталога нет /usr/include/sys. То есть, types.h, stat.hи т. д. отсутствуют. Они существуют в include/linuxкаталоге, но не include/sys.

Что происходит?

решение1

Если вы используете Ubuntu на 64-битной системе (сейчас не могу точно сказать, как обстоит дело с 32-битной системой), то каталог из вопроса будет следующим:

/usr/include/x86_64-linux-gnu/sys

Теперь, имея эту информацию, вы можете создать символические ссылки на эти файлы, если они вам действительно нужны в этом месте ( /usr/include/sys), используя это в терминале:

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

решение2

Установите libc6-dev-amd64, если вы работаете на 64-битном Linux. Введите следующую команду в терминале Ubuntu:

sudo apt-get install libc6-dev-amd64

решение3

Давайте проверим, какой путь поиска include по умолчанию используется в gcc.этот ответ, мы получаем эту команду:

gcc -xc -E -v -

В конце вывода я вижу на своей машине следующее:

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

Обратите внимание на предпоследнюю строку. Это означает, что когда вы компилируете файл C с помощью #include <sys/stat.h>, gcc будет искать , /usr/include/x86_64-linux-gnu/sys/stat.hпрежде чем пытаться /usr/include/sys/stat.h, без необходимости делать симлинк на что-либо.

решение4

Так как моя архитектура amd64, то нет libc6-dev-amd64. Пакет для установки — libc6-dev-i386.

Это исправило зависимость для CPAN-пакета.

Связанный контент