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

5

Я пытаюсь установить gcc 4.8.1 на данный момент. В настоящее время установлены 4.8.2 и 4.9.1. Я скачал 4.8.1 отсюда Ссылка . После извлечения файлов я сделал ./configure , а затем попытался make . В конце make я получаю эту ошибку

/usr/include/linux/errno.h:1:23: fatal error: asm/errno.h: No such file or directory
 #include <asm/errno.h>

Я новичок в Linux, поэтому не знаю, как найти или добавить этот заголовочный файл.

Изменить: Шаги, которые я сделал:

  1. Извлеките gcc-4.8.1.tar.gz в папку
  2. Открыть окно терминала
  3. cd gcc-4.8.1
  4. ./configure --build=x86_64-linux-gnu
  5. make -j4

Я не знаю, что я сделал по-другому, но он окончательно скомпилирован. После этого я сделал установку. Мой вопрос теперь, как использовать это вместо 4.8.2, который с помощью команды gcc-4.8 по умолчанию по умолчанию.

    
задан Meenor 29.09.2014 в 21:31
источник

2 ответа

3

Заголовок asm/errno.h предоставляется различные пакеты . Нечетный, что gcc потребует его, но вы можете попробовать:

sudo apt-get install linux-libc-dev

Вам также необходимо указать GCC, чтобы узнать, какая архитектура и местоположение для конкретной ОС для заголовков:

../configure --build=x86_64-linux-gnu 

(или i386-linux-gnu для 32-разрядного Ubuntu).

При создании материала из источника рекомендуется использовать флаг --prefix (и с GCC, флаг --program-suffix ) при настройке. Так как вы этого не сделали, попробуйте запустить /usr/bin/gcc .

Таким образом:

tar xf gcc-4.8.1.tar.gz 
mkdir gcc
cd gcc
../gcc-4.8.1/configure  --build=x86_64-linux-gnu --prefix=/usr/local --program-suffix=-4.8.1
make -j
sudo make install

Теперь ваши двоичные файлы GCC будут установлены на /usr/local/bin/ и другие вещи в других папках в /usr/local .

Например:

$ /usr/local/bin/gcc-4.8.1  # or simply gcc-4.8.1, since this folder is in your PATH

Заметьте, как я запускаю configure и make из другого каталога, вне источника GCC? Вот как документы GCC рекомендуют строить GCC.

    
ответ дан muru 29.09.2014 в 21:35
источник
2

Я получил ту же ошибку на ubuntu-xenial 4.4.0-75-generic .

Я обнаружил, что у меня есть папка /usr/include/asm-generic , но нет /usr/include/asm , которую gcc искал.

Создание символической ссылки разрешило это для меня.

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

Яркое предупреждение . Хотя иногда бывает так, что это сложно сделать, это не всегда хорошая идея только потому, что она работает. Я делаю это на виртуальной машине, которую я могу воссоздать, запустив простой скрипт, и именно поэтому это не имеет большого значения, если я что-то сломаю.

    
ответ дан Nicolai S 14.05.2017 в 20:02