Я пытаюсь установить gcc 4.8.1 в данный момент. В настоящее время 4.8.2 и 4.9.1 установлены. Я загрузил 4.8.1 отсюда http://gcc.cybermirror.org/releases/gcc-4.8.1/. После извлечения файлов я сделал a ./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, таким образом, я не знаю, как найти или добавить этот заголовочный файл.
Править: Шаги я сделал:
cd gcc-4.8.1
./configure --build=x86_64-linux-gnu
make -j4
Я не знаю то, что я сделал по-другому, но это наконец скомпилировало. После этого я действительно делал установку. Мой вопрос теперь, как я использую это вместо 4.8.2 который с помощью команды gcc-4.8 все еще значения по умолчанию к.
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 создаются.
Я получил ту же ошибку по телефону 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
Справедливое предупреждение : Хотя, иногда, нужно сделать этот вид обмана, это - не всегда хорошая идея просто, потому что он работает. Я делаю это в виртуальной машине, которую я могу воссоздать путем запущения простого скрипта, и именно поэтому это не грандиозное предприятие, если я повреждаю что-то.