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

Asm/errno.h: Нет такого файла или каталога

При создании gcc я получаю эту ошибку:

In file included from /usr/include/bits/errno.h:25,
             from /usr/include/errno.h:36,
             from ../.././gcc/tsystem.h:96,
             from ../.././gcc/crtstuff.c:68:
/usr/include/linux/errno.h:4:23: error: asm/errno.h: No such file or directory
make[2]: *** [crtbegin.o] Error 1
make[2]: Leaving directory `/opt/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc'

Я создаю gcc 4.1 из источника. Я думаю, что мне нужно установить build-essential. Однако установка этого пакета в ubuntu 12.04 будет автоматически загружать и устанавливать gcc 4.6, и я не хочу этого.

Есть ли другой способ?

4b9b3361

Ответ 1

Я думаю, что пакет, который вы хотите, linux-libc-dev. Я столкнулся с этим при создании 32-на-64; поэтому мне понадобилось linux-libc-dev:i386.

Ответ 2

Это сработало для меня:

ln -s /usr/include/asm-generic /usr/include/asm

Ответ 3

Это сработало для меня:

sudo ln -s /usr/include/asm-generic /usr/include/asm

Причина того, что то, что GCC ожидает, будет называться /usr/include/asm, переименовывается в /usr/include/asm-generic в некоторых дистрибутивах.

Ответ 4

/usr/include/asm/errno.h является частью заголовков linux. Я не могу напрямую говорить с Ubuntu 12.04, но в общем вы можете скачать источники linux в качестве пакета для своего дистрибутива и не должны требовать загрузки/установки gcc. В противном случае вы можете вручную загрузить заголовки linux для версии вашего ядра (uname -a) и использовать директиву include для CFLAGS, чтобы указать каталог для поиска.

Изменить: sudo apt-get install linux-headers-generic может работать для вас.

Ответ 5

Вам не хватает части пакетов разработки. Я не знаю Ubuntu, но вы должны иметь возможность попросить систему управления пакетами установить пакет, содержащий /usr/include/asm/errno.h.

Не копируйте файл с похожим именем где-нибудь в вашей системе (или, что еще хуже, откуда-то еще). Отсутствующие файлы могут означать, что некоторые пакеты повреждены; снова попросите менеджера пакетов проверить все и (повторно) установить отсутствующие/сломанные фрагменты.

Если вы не запускаете выпуск LTS, обновите его. Вашему Ubuntu около 2 лет, то есть древнему.

Пока мы здесь, почему на этой прекрасной планете вы строите такой древний компилятор? Текущий GCC только что выпущен 4.9.0, все до 4.7 - это древняя история, более не поддерживаемая.

Ответ 6

Если вы можете найти:

usr/include/asm-generic/errno.h

выполнив:

find /usr/include -name errno.h

затем попробуйте выполнить:

cp --archive /usr/include/asm-generic /usr/include/asm

Он может исправить эту проблему.

Ответ 7

У меня возникла эта проблема при компиляции Asterisk 1.8.24.0 и она была решена с помощью:

mkdir /usr/include/asm-generic
cp /usr/include/asm/errno-base.h /usr/include/asm-generic/

Не знаю, правильно ли это, но я прочитал комментарии выше, и это дало мне идею... и это сработало:)