Attualmente sto utilizzando Ubuntu 16.04
e vuoi installare gcc-5.3
dalla sorgente, senza interrompere il gcc-5.4
e gcc-4.9
che ho già installato utilizzando il gestore di pacchetti Synaptic.
Il motivo per cui voglio gcc-5.3
è che sto usando CUDA 8.0 RC
, che non supporta le versioni di gcc successive a 5.3
. Piuttosto che eseguire il downgrade a 4.9
, vorrei installare (o almeno sapere come installare) 5.3
. Ho già il codice per gcc-5.3
e devi solo passare attraverso il configure/make/make install
rituale.
Ora, ho bisogno di comprendere le varie opzioni di configurazione prima di eseguire make e make install. In particolare voglio essere certo di installare gcc-5.3
nel posto giusto e non interferire con il mio gcc-5.4
esistente e gcc-4.9
.
Ho trovato un account su come configurare 5.3
, era il seguente:
./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
Alcune di queste opzioni hanno senso, altre no. Nello specifico, le opzioni che penso di aver capito abbastanza bene da non rovinarmi sono:
--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.
Le opzioni che mi preoccupano sono:
--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 eseguo un find . -name gcc
, gli unici percorsi rilevanti che vedo sono /usr/lib/gcc
e /usr/bin/gcc
In /usr/lib/gcc
, ci sono due sottodirectory:i686-linux-gnu
e x86_64-linux-gnu
, poiché ho una macchina a 64 bit, ho cercato nella directory x64.
Lì, ho visto un collegamento software:4.9.3
, quello collegato a una directory chiamata 4.9
, che aveva file per gcc-4.9
. Allo stesso modo, ho visto un softlink chiamato 5.4.0
quello collegato a una directory chiamata 5
, che aveva file per gcc-5.4
. Quindi, mi aspetto di voler usare prefix=/usr/lib/gcc/5.3
e non utilizzare il --program-suffix
opzione. È corretto?
A questo punto, presumo che quando eseguo make &make install che il .a
&.so
i file verranno inseriti in /usr/lib/gcc/5.3
e che l'eseguibile finirà come /usr/bin/gcc-5.3
e che sarò in grado di utilizzare le alternative di aggiornamento di Ubuntu per spostarmi tra gcc-5.4
, gcc-5.3
e gcc-4.9
(Nota:il motivo per cui non sto usando Synaptic è che fornisce solo gcc-5.4, che chiama gcc-5. Allo stesso modo, ppa ppa:ubuntu-toolchain-r/test
si riferisce a tutte le versioni di gcc-5.X come gcc-5, che sembra anche pericoloso da usare. Sospetto che la decisione di fare riferimento a tutte le versioni minori di gcc-5.x come gcc-5 sia la radice dei miei problemi)
Risposta accettata:
In tal caso non è necessario installare gcc=5.3 dal sorgente. Puoi utilizzare un ambiente conda (installa Miniconda o Anaconda) e installa gcc_linux-64=5.3.