Как установить последнюю стабильную версию GCC в Linux Mint?

8

Я хочу установить последнюю версию GCC (коллекция компиляторов GNU) в Linux Mint 17.3. В настоящее время g++ --versionвозвращает 4.8.4, тогда как последний стабильный выпуск 5.3.

becko
источник
Бэкпорт более поздней версии обычно возможен, но также нетривиален. Альтернативой является локальная установка из источника. Хотя с точки зрения чистоты, бэкпорт предпочтительнее.
Фахим Мита
Есть ли другой способ установить его, может быть, не как пакет?
Беко
Да, как я уже сказал выше, локальная установка является опцией. Но вы должны быть осторожны, чтобы потом удалить его. Создание пакета - более сложный процесс, но более простой и чистый с точки зрения обслуживания.
Фахим Мита
Последняя версия Gcc, 9.2, распространяется в виде исходного кода. Если этот комментарий не будет удален модератором, вы можете найти время, чтобы прочитать инструкцию на его оригинальном сайте gcc.gnu.org . Предыдущий ответ был удален без уважительной причины ИМХО.
bbaassssiiee

Ответы:

8

Ваш Linux Mint поставляется с предварительно установленным пакетом GCC. Итак, сначала я бы порекомендовал вам проверить, присутствует ли пакет в вашей системе, введя следующую команду в терминале.

apt-cache search gcc

Если у вас нет такого пакета, используйте следующую команду в терминале, сначала добавьте следующий репозиторий:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

затем используйте следующую команду:

sudo apt-get update
sudo apt-get install g++-4.7 c++-4.7

Всегда есть что-то, чему мы должны научиться; примите это как обязательное условие перед Linux .. Учитесь гуглить ... попробуйте сделать более сложный поиск ...

Винуд Н.К. Махешвари
источник
Почему я хочу установить g++-4.7более низкую версию, чем у g++-4.8меня уже есть? Я хочу обновить, а не понизить.
Беко
это было 4.8, и вам нужно искать ранее доступный последний пакет с поиском apt-cache gcc, я дал вам логику, но вы действительно понизили мои очки gr8
Vinood NK Maheshwari
В настоящее время этот ответ кажется бессвязным. Пожалуйста, объясните, почему OP хотел бы установить v4.7 вместо v5 (желательно без клише о достоинствах тяжелой работы).
agc
заменить 4.7 на 4.9, и это работает.
Algoman
3

скачать последнюю версию gcc

wget http://www.netgull.com/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2

используйте команду: tar -xjfчтобы разархивировать файл

Введите каталог, который вы только что распаковали, скажем $HOME/Downloads/gcc-5.3.0, введите команду:

./configure --disable-checking --enable-languages=c,c++,objc 
--disable-multilib --with-system-zlib prefix=/usr/bin/gcc-5.3

Установка зависимостей: сборка GCC требует GMP4.2 +, MPFR 2.4.0+ и MPC 0.8.0+ и необходима сборка

sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libc6-dev
sudo apt-get install build-essential

установить компилятор C ++

sudo apt-get install g++

Следующий тип:

make 
sudo make install

Отредактируйте, если вы все еще получаете сообщение об ошибке типа "zlib.h not found!" Вы можете сделать следующее, чтобы исправить это:

apt-get install zlib1g-dev
GAD3R
источник
Если у вас есть ошибки, пожалуйста, прокомментируйте. Я буду обновлять.
GAD3R
Почему --disable-multilib?
Becko
ошибка:gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
becko
Ссылка мертва.
einpoklum
1

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

Возьмите gcc-8 в качестве примера:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-8 g++-8
gcc-8 --version

если вы хотите выбрать gcc-8 / g ++ - 8 с более высоким приоритетом (в данном случае 20), вам также необходимо

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8
Чжи Юань
источник
0

По правде говоря, я просто слишком ленив, чтобы съехать с 17.3 - это работает для меня. Это, как говорится, мне все еще нужно более новый GCC. Чтобы скомпилировать его несколько раз для разных целей, у меня есть скрипт bash (см. Ниже), который я модифицирую и запускаю (я пишу свою собственную игрушечную ОС, поэтому я должен использовать специально сгенерированный gcc).

Измените каталоги в приведенном ниже сценарии, чтобы они соответствовали имеющимся каталогам. Я храню скомпилированную версию в своем собственном каталоге, чтобы я мог легко переключаться между моей скомпилированной версией и версией системы. Я предлагаю вам сделать то же самое. Вам нужно скачать binutils-2.23.2, а также интересующую вас версию gcc (я использую 7.1.0 ниже). Поместите их в каталог ~ / contrib вместе со скриптом ниже.

Вы также можете изменить строку «--enabled-languages ​​= c» на «--enabled-languages ​​= c, c ++, objc» - моему проекту нужен только C. Еще одним изменением будет значение PLATFORM. Я использую «i686-elf», но это не сработает для вас (я изменил его ниже на что-то, что будет работать для 32-битной платформы). Вы можете попробовать "x86_64-linux-gnu" для 64-битной платформы.

Для любопытных - причина, по которой я собираю его так, заключается в том, что в процессе сборки gcc была ошибка, препятствовавшая перестройке в исходном каталоге. Я не знаю, существует ли эта ошибка до сих пор (в последний раз я сталкивался с ней в 4.8.0), но единственным обходным решением было явное создание отдельной директории, если вы когда-либо хотели восстановить.

[РЕДАКТИРОВАТЬ: Выполнить установку зависимостей, предложенных GAD3R выше]

#!/bin/bash

function die() {
   echo $1
   exit 127
}


export PREFIX=/home/lelanthran/opt/cross
export TARGET=i686-linux-gnu
export PATH="$PREFIX/bin:$PATH"

pushd $PWD &> /dev/null
mkdir -p build-binutils
cd build-binutils
../binutils-2.23.2/configure \
   --target=$TARGET \
   --prefix="$PREFIX" \
   --with-sysroot \
   --disable-nls \
   --disable-werror || die "binutils/config error"
make           || die "binutils/make error"
make install   || die "binutils/make install error"

popd &> /dev/null

pushd $PWD &> /dev/null
mkdir -p build-gcc-7.1.0
cd build-gcc-7.1.0
../gcc-7.1.0/configure \
   --target=$TARGET \
   --prefix="$PREFIX" \
   --disable-nls \
   --enable-languages=c \
   --without-headers || die "gcc/config error"
make all-gcc                  || die "gcc/make all-gcc error"
make all-target-libgcc        || die "gcc/make all-target-libgcc error"
make install-gcc              || die "gcc/make install-gcc error"
make install-target-libgcc    || die "gcc/make install-target-libgcc error"
Lelanthran
источник