Мне установили gcc 4.8, но я также должен установить gcc 3.4.3. Я выполнил эти шаги:
Затем это бросает эту ошибку: http://paste.ubuntu.com/24807240/
Кто-либо может предложить что случилось и также как попросить, чтобы gcc использовал более старую версию, однажды установленную?
ОС: Ubuntu 14.04 LTS, 64-разрядный
Проверьте текущую версию, запустив gcc -v
.
Далее, вы хотите установить предыдущую версию.
gcc-3.4
Поскольку эта версия доступна в более старых выпусках Ubuntu, нам необходимо иметь соответствующие репозитории для этой версии. Из некоторых поисков я обнаружил, что они следующие: их нужно добавить в /etc/apt/sources.list
deb http://snapshot.debian.org/archive/debian/20070730T000000Z/ lenny main
deb-src http://snapshot.debian.org/archive/debian/20070730T000000Z/ lenny main
deb http://snapshot.debian.org/archive/debian-security/20070730T000000Z/ lenny/updates main
deb-src http://snapshot.debian.org/archive/debian-security/20070730T000000Z/ lenny/updates main
. После выполнения sudo apt-get update
будут доступны новые репозитории.
Далее установите необходимый компилятор. Я обычно устанавливаю gcc
и g++
одной и той же версии для совместимости. Для общего назначения рекомендуется.
Следовательно,
sudo apt-get install gcc-3.4 g++-3.4
2. Проверка доступных компиляторов
На этом этапе у каждого будет два набора компиляторов (по одному для g++
и gcc
). Их можно проверить по dpkg --list | grep compiler
,
dpkg --list | grep compiler
dpkg --list | grep compile
ii g++ 4:4.8.2-1ubuntu6 amd64 GNU C++ compiler
ii g++-3.4 3.4.6-5 amd64 The GNU C++ compiler
ii g++-4.8 4.8.4-2ubuntu1~14.04.1 amd64 GNU C++ compiler
ii gcc 4:4.8.2-1ubuntu6 amd64 GNU C compiler
ii gcc-3.4 3.4.6-5 amd64 The GNU C compiler
ii gcc-4.8 4.8.4-2ubuntu1~14.04.1 amd64 GNU C compiler
ii hardening-includes 2.5ubuntu2.1 all Makefile for enabling compiler flags for security hardening
ii libllvm3.6:amd64 1:3.6-2ubuntu1~trusty1 amd64 Modular compiler and toolchain technologies, runtime library
ii libxkbcommon0:amd64 0.4.1-0ubuntu1 amd64 library interface to the XKB compiler - shared library
ii pkg-config 0.26-1ubuntu4 amd64 manage compile and link flags for libraries
. Если вам это нужно, вы можете проверить место установки.
Важным является расположение двух наборов компиляторов, которые могут быть перечислены с помощью
ls -lh /usr/bin/gcc*
lrwxrwxrwx 1 root root 7 5月 13 2016 /usr/bin/gcc -> gcc-4.8
-rwxr-xr-x 1 root root 91K 1月 4 2007 /usr/bin/gcc-3.4
-rwxr-xr-x 1 root root 758K 1月 27 2016 /usr/bin/gcc-4.8
и
ls -lh /usr/bin/g++*
lrwxrwxrwx 1 root root 7 4月 8 2014 /usr/bin/g++ -> g++-4.8
-rwxr-xr-x 1 root root 93K 1月 4 2007 /usr/bin/g++-3.4
-rwxr-xr-x 1 root root 758K 1月 27 2016 /usr/bin/g++-4.8
После установки необходимых компиляторов можно просто переключаться между компиляторами. Это делается путем обновления списка альтернативных версий приложения. Для этого нужно запустить команду update-alternative
с определенными параметрами.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.4 40 --slave /usr/bin/g++ g++ /usr/bin/g++-3.4
sudo update-alternatives --config gcc
Это свяжет g++
с gcc
и при изменении только gcc
g++
изменится автоматически.
Затем, когда вы захотите изменить компилятор, введите следующее:
sudo update-alternatives --config gcc
Затем пользователя спросят, какой компилятор выбрать.
sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-4.8 60 auto mode
1 /usr/bin/gcc-3.4 40 manual mode
2 /usr/bin/gcc-4.8 60 manual mode
Press enter to keep the current choice[*], or type selection number:
Здесь вы можете выбрать, нажав клавишу (0,1) и затем нажав ввод. Изменение текущей выбранной версии может быть проверено с помощью gcc -v
Удаление update-alternative
update-alternative
, который является опцией 0. sudo apt-get remove gcc-3.4 g++-3.4
, затем запустите sudo update-alternatives --config gcc
Программа update-alternatives
будет искать ссылки и обнаружил, что они отсутствуют, и автоматически удалит альтернативу, вернувшись к другой доступной опции.
sudo update-alternatives --config gcc
update-alternatives: warning: alternative /usr/bin/gcc-3.4 (part of link group gcc) doesn't exist; removing from list of alternatives
There is only one alternative in link group gcc (providing /usr/bin/gcc): /usr/bin/gcc-4.8
Nothing to configure.
Не возможно иметь к версиям того же пакета, как они конфликтовали бы файлы, например: Вы испытали бы затруднения при попытке обновить один из пакетов, когда они будут размещены в то же местоположение.
Говорить, что у Вас есть опция понизить версию программы к более старой, здесь прибывает как в:
apt-cache showpkg <package-name>
список доступных версий будет распечатанsudo apt-get install <package-name>=<package-version-number>
для установки версии, Вы предпочитаетеapt-mark hold <package-name>
это будет препятствовать тому, чтобы пакет был обновленman apt
открыть руководство команды