Primeiro, como você executou sudo apt-get install build-essential
, você deve ter o gcc
instalado. Você pode descobrir qual versão você possui executando gcc -v
.
A localização desta versão instalada seria /usr/lib/gcc/version-number/
.
/usr/bin/gcc
é o local padrão do binário de gcc
no Ubuntu.
Em seguida,
Você quer instalar uma versão anterior.
- Para
gcc-4.1
Como esta versão está disponível nas versões mais antigas do Ubuntu, precisamos ter os repositórios apropriados para a versão. De alguma pesquisa, descobri que eles são os seguintes, que devem ser adicionados ao /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
* Estes links foram retirados de esta resposta .
Depois de fazer sudo apt-get update
, os novos repositórios estarão disponíveis.
Em seguida, instale o compilador necessário. Eu costumo instalar gcc
e g++
da mesma versão para interoperabilidade. Para fins gerais, é recomendado.
Por isso,
sudo apt-get install gcc-4.1 g++-4.1
2. Verificando os compiladores disponíveis
Nesse estágio, um deles terá dois conjuntos de compiladores (oen cada para g++
e gcc
). Estes podem ser verificados por 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
Importante é a localização dos dois conjuntos de compiladores, que podem ser listados por
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
e
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
- Selecionando um compilador para o propósito atual (criação de um aplicativo)
Depois de ter exigido compiladores instalados, pode-se simplesmente alternar entre os compiladores. Isso é feito atualizando a lista de versões alternativas de um aplicativo. Para fazer isso, o comando update-alternative
deve ser executado com determinados parâmetros.
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
Isso vinculará g++
a gcc
e, ao alterar somente gcc
, o g++
será alterado automaticamente.
Então, sempre que você quiser mudar o compilador, digite:
sudo update-alternatives --config gcc
Em seguida, o usuário é questionado sobre qual compilador escolher.
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:
Aqui você pode escolher pressionando a tecla (0,1) e pressionando enter. A mudança na versão atual selecionada pode ser verificada por gcc -v
.
4. Construindo um aplicativo usando compiladores instalados
Algumas diretrizes básicas:
- Em geral, há duas etapas, criação (
build
) e criação ( make
). A etapa build
envolve a geração de códigos específicos do sistema para instalação, o que requer a vinculação aos compiladores necessários. make
é equivalente a instalação em algum diretório. Qualquer aplicativo pode ser build
e make
em qualquer pasta, conforme decidido pelo usuário.
- Para
build
, uma pasta temporária é escolhida. Esta pasta pode ser removida após uma etapa make
bem-sucedida. É importante que, para a etapa make
, o destino da instalação seja definido normalmente por --prefix=/path/to/folder
enquanto o script build
é executado. Por exemplo, se o script de configuração for .setup
, na maioria dos casos,
./setup --prefix=/path/to/installation/folder
Para detalhes específicos, consulte o manual ou as diretrizes para sua inscrição.
Ao executar o script de construção, a versão atual do compilador selecionada (para gcc
e g++
) será usada. Ao executar o aplicativo instalado, o comportamento dependerá do caso de o programa extrair o compilador da variável de ambiente ou estar vinculado ao binário específico. Isso deve ser verificado após a instalação.
-
cmake
e make
são utilitários separados usados para instalação. Aplicativos diferentes requerem versões diferentes, portanto, instale o utilitário e a versão necessários de acordo.
-
A etapa de build
e make
é igual para os compiladores também.