Создание GCC в некорневой папке

Возможно, не все необходимые сертификаты были загружены на ваш компьютер. Подключите терминал и введите следующую команду, чтобы обновить ваши сертификаты SSL:

$ sudo apt-get install --reinstall ca-certificates

После повторной установки сертификатов перезагрузите компьютер и повторите попытку.

1
задан 25 March 2017 в 05:19

1 ответ

Во-первых, поскольку вы запустили sudo apt-get install build-essential, вы должны уже установить gcc. Вы можете узнать, какую версию у вас есть, запустив gcc -v. Местоположение этой установленной версии будет /usr/lib/gcc/version-number/.

/usr/bin/gcc является местоположением по умолчанию для двоичного файла gcc в Ubuntu.

Затем вы хотите установить предыдущую версию.

Для [ f14]

Поскольку эта версия доступна в старых версиях 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-4.1 g++-4.1

2. Проверка доступных компиляторов

На этом этапе у каждого будет два набора компиляторов (каждый из них для g++ и gcc). Это можно проверить с помощью dpkg --list | grep compiler,

dpkg --list | grep compiler
ii  antlr3.2                              3.2-14                                              all          language tool for constructing recognizers, compilers etc
ii  g++                                   4:5.3.1-1ubuntu1                                    amd64        GNU C++ compiler
ii  g++-4.1                               4.1.2-13                                            amd64        The GNU C++ compiler
ii  g++-4.1-multilib                      4.1.2-13                                            amd64        The GNU C++ compiler (multilib files)
ii  g++-5                                 5.4.0-6ubuntu1~16.04.4                              amd64        GNU C++ compiler
ii  gcc                                   4:5.3.1-1ubuntu1                                    amd64        GNU C compiler
ii  gcc-4.1                               4.1.2-13                                            amd64        The GNU C compiler
ii  gcc-4.1-multilib                      4.1.2-13                                            amd64        The GNU C compiler (multilib files)
ii  gcc-5                                 5.4.0-6ubuntu1~16.04.4                              amd64        GNU C compiler
ii  gcc-5-multilib                        5.4.0-6ubuntu1~16.04.4                              amd64        GNU C compiler (multilib support)
ii  gcc-multilib                          4:5.3.1-1ubuntu1                                    amd64        GNU C compiler (multilib files)
ii  hardening-includes                    2.7ubuntu2                                          all          Makefile for enabling compiler flags for security hardening
ii  libantlr-java                         2.7.7+dfsg-6ubuntu1                                 all          language tool for constructing recognizers, compilers etc (java library)
ii  libllvm3.8:amd64                      1:3.8-2ubuntu3                                      amd64        Modular compiler and toolchain technologies, runtime library
ii  libllvm3.8:i386                       1:3.8-2ubuntu3                                      i386         Modular compiler and toolchain technologies, runtime library
ii  libxkbcommon0:amd64                   0.5.0-1ubuntu2                                      amd64        library interface to the XKB compiler - shared librar

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

ls -lh /usr/bin/gcc*
lrwxrwxrwx 1 root root    5  五   5  2016 /usr/bin/gcc -> gcc-5
-rwxr-xr-x 1 root root 208K  七  10  2007 /usr/bin/gcc-4.1
-rwxr-xr-x 1 root root 895K 十一  3 10:00 /usr/bin/gcc-5

и [!d17 ]

ls -lh /usr/bin/g++*
-rwxr-xr-x 1 root root 210K  七  10  2007 /usr/bin/g++-4.1
-rwxr-xr-x 1 root root 899K 十一  3 09:41 /usr/bin/g++-5
Для gcc-4.1

После установки необходимых компиляторов можно просто переключиться между компиляторами. Это делается путем обновления списка альтернативных версий приложения. Для этого команда update-alternative должна запускаться с определенными параметрами.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.1
sudo update-alternatives --config gcc

Это будет связывать g++ с gcc, а при изменении только gcc изменится g++ автоматически.

Тогда всякий раз, когда вы хотите изменить компилятор, введите это:

sudo update-alternatives --config gcc

Затем пользователь спрашивает, какой компилятор выбрать.

  Selection    Path              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gcc-5     60        auto mode
  1            /usr/bin/gcc-4.1   40        manual mode
Press <enter> to keep the current choice[*], or type selection number:

Здесь вы можно выбрать, нажав клавишу (0,1), а затем нажав enter. Изменение текущей выбранной версии можно проверить с помощью gcc -v.

2. Проверка доступных компиляторов

Некоторые основные рекомендации:

Обычно есть два шага: создание (build) и создание (make). Шаг build включает в себя создание системных кодов для установки, которые требуют привязки к требуемым компиляторам. make эквивалентно установке в какой-либо директории. Любое приложение может быть build и make в любой папке, как было определено пользователем. В build выбрана временная папка. Эта папка может быть удалена после успешного шага make. Важно отметить, что для шага make назначение установки определяется обычно --prefix=/path/to/folder, пока выполняется сценарий build. Например, если сценарий установки .setup, то в большинстве случаев ./setup --prefix=/path/to/installation/folder

Для получения подробной информации обратитесь к руководству или рекомендациям для вашего приложения.

При запуске скрипт сборки будет использоваться текущая выбранная версия компилятора (для gcc и g++). При запуске установленного приложения поведение будет зависеть от того, будет ли программа принимать компилятор из переменной окружения или связана с конкретным двоичным кодом. Это необходимо проверить после установки.

Существует, как правило, два шага, построение (build) и создание (make). Шаг build включает в себя создание системных кодов для установки, которые требуют привязки к требуемым компиляторам. make эквивалентно установке в какой-либо директории. Любое приложение может быть build и make в любой папке, как было определено пользователем. Шаг build и make одинаковы для компиляторов.
0
ответ дан 23 May 2018 в 00:19
  • 1
    Это круто!! Большое вам спасибо за подробный ответ. Я бы поднял тебя, если бы мог ... и в 1000 раз! – Anton Rasmussen 28 March 2017 в 18:08

Другие вопросы по тегам:

Похожие вопросы: