Actualmente estoy ejecutando Ubuntu 16.04
y quiero instalar gcc-5.3
desde la fuente, sin interrumpir el gcc-5.4
y gcc-4.9
que ya he instalado usando el administrador de paquetes Synaptic.
La razón por la que quiero gcc-5.3
es que estoy usando CUDA 8.0 RC
, que no admite versiones de gcc posteriores a 5.3
. En lugar de bajar a 4.9
, me gustaría instalar (o al menos saber cómo instalar) 5.3
. Ya tengo el código para gcc-5.3
y solo necesita pasar por configure/make/make install
rito.
Ahora, necesito comprender las diversas opciones de configuración antes de ejecutar make y make install. Particularmente quiero estar seguro de que instalo gcc-5.3
en el lugar correcto y no interfiera con mi gcc-5.4
existente y gcc-4.9
.
Encontré una cuenta de cómo configurar 5.3
, que era el siguiente:
./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
Algunas de estas opciones tienen sentido, otras no. Específicamente, las opciones que creo que entiendo lo suficientemente bien como para no equivocarme son:
--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.
Las opciones que me preocupan son:
--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.
Cuando hago un find . -name gcc
, las únicas rutas relevantes que veo son /usr/lib/gcc
y /usr/bin/gcc
En /usr/lib/gcc
, hay dos subdirectorios:i686-linux-gnu
y x86_64-linux-gnu
, como tengo una máquina de 64 bits, busqué en el directorio x64.
Allí, vi un enlace blando:4.9.3
, que enlazaba con un directorio llamado 4.9
, que tenía archivos para gcc-4.9
. Del mismo modo, vi un enlace suave llamado 5.4.0
que enlazaba con un directorio llamado 5
, que tenía archivos para gcc-5.4
. Entonces, espero que quiera usar prefix=/usr/lib/gcc/5.3
y no usar el --program-suffix
opción. ¿Es esto correcto?
En este punto, asumo que cuando ejecuto make &make install el .a
&.so
los archivos se colocarán en /usr/lib/gcc/5.3
y que el ejecutable terminará como /usr/bin/gcc-5.3
y que podré usar las alternativas de actualización de Ubuntu para moverme entre gcc-5.4
, gcc-5.3
y gcc-4.9
(Nota:la razón por la que no estoy usando Synaptic es que solo proporciona gcc-5.4, al que llama gcc-5. De manera similar, ppa ppa:ubuntu-toolchain-r/test
se refiere a todas las versiones de gcc-5.X como gcc-5, lo que también parece peligroso de usar. Sospecho que la decisión de referirme a todas las versiones menores de gcc-5.x como gcc-5 es la raíz de mis problemas)
Respuesta aceptada:
En ese caso, no necesita instalar gcc=5.3 desde la fuente. Puede usar un entorno conda (instalar Miniconda o Anaconda) e instalar gcc_linux-64=5.3.