No momento, estou executando Ubuntu 16.04
e quero instalar gcc-5.3
da fonte, sem interromper o gcc-5.4
e o gcc-4.9
que eu já instalei usando o Gerenciador de Pacotes Synaptic.
O motivo pelo qual eu quero gcc-5.3
é que estou usando CUDA 8.0 RC
, que não suporta versões do gcc após 5.3
. Em vez de fazer o downgrade para 4.9
, gostaria de instalar (ou pelo menos saber como instalar) 5.3
. Eu já tenho o código para gcc-5.3
e só preciso passar pelo ritual configure/make/make install
.
Agora, preciso entender as várias opções de configuração antes de executar o make e make install. Particularmente, quero ter certeza de que instalo gcc-5.3
no lugar certo e não interfiro nos meus gcc-5.4
e gcc-4.9
existentes.
Encontrei uma conta de como configurar o 5.3
, que foi o seguinte:
./gcc-5.3.0/configure --disable-checking --program-suffix=-5.3 --enable-languages=c,c++,go,objc --disable-multilib --with-system-zlib prefix=/usr/local/gcc-5.3
Algumas dessas opções fazem sentido, outras não. Especificamente, as opções que eu acho que entendo bem o suficiente para não me estragar são:
--disable-checking: Will make the installation quicker, but at the risk
of missing errors. Since I'm paranoid, I'll probably
omit this option.
--disable-multilib: I don't understand this. I gather it has something
to do with variations on the compiler's target machine,
but that's all I can gather.
At worst, if I omit this option, I think I'll just
end up with some extra libraries, which doesn't seem
so bad. Why do/don't I want to use this?
--with-system-zlib: Use the zlib that I already have with my system,
rather than gcc's version. This seems reasonable to
me.
--enable-languages=c,c++,go,objc: AFAIK, I'm really just interested in c & c++,
so this option seems pretty harmless, although I might
just use --enable-lnguages=all, since it can't hurt.
As opções que me preocupam são:
--program-suffix=-5.3: This seems just to add a -5.3 suffix
at the end of the installation path,
which is probably a good idea if I get the
path right
prefix=/usr/local/gcc-5.3: This just seems to specify the
installation directory and to make the
--program-suffix=-5.3 specification
redundant. However, it is the option that
makes me the most uneasy.
Quando faço um find . -name gcc
, os únicos caminhos relevantes que vejo são /usr/lib/gcc
e /usr/bin/gcc
Em /usr/lib/gcc
, existem dois subdiretórios - i686-linux-gnu
e x86_64-linux-gnu
, já que tenho uma máquina de 64 bits, examinei o diretório x64.
Lá, vi um link flexível - 4.9.3
, que estava vinculado a um diretório chamado 4.9
, que tinha arquivos para gcc-4.9
. Da mesma forma, vi um link chamado 5.4.0
que estava vinculado a um diretório chamado 5
, que tinha arquivos para gcc-5.4
. Portanto, espero usar o prefix=/usr/lib/gcc/5.3
e não usar a opção --program-suffix
. Está correto?
Neste ponto, estou assumindo que, quando eu executo, make & amp; make install que o .a
& amp; .so
arquivos serão colocados em /usr/lib/gcc/5.3
e que o executável terminará em /usr/bin/gcc-5.3
e que eu poderei usar as alternativas de atualização do Ubuntu para mover entre gcc-5.4
, gcc-5.3
e gcc-4.9
(Nota: a razão pela qual eu não estou usando o Synaptic é que ele apenas fornece o gcc-5.4, que ele chama gcc-5. Similarmente, o ppa ppa:ubuntu-toolchain-r/test
refere-se a todas as versões do gcc-5.X como gcc- 5, que também parece perigoso de usar, eu suspeito que a decisão de se referir a todas as versões menores do gcc-5.x como gcc-5 é a raiz dos meus problemas)