2010-11-11 17 views
8

Sto usando l'ultima versione di Ubuntu che viene fornita con la versione di gcc 4.4.5. Ho bisogno di ricompilare un programma che non è stato scritto da me e che può essere compilato solo con una versione precedente di gcc come la 4.0. Sono riuscito a configurare questa versione precedente e ho usato un prefisso durante il processo di installazione in modo che la mia vecchia versione gcc si trovasse in /opt/gcc-4.0.1/bin. Ho provato a creare un collegamento simbolico usando ln -s /opt/gcc-4.0.1/bin/gcc gcc. Ma quando invoco lo gcc -v ottengo ancora il risultato gcc version 4.4.5. Per compilare il mio programma che viene già con un makefile, se lo faccio make, sta ancora usando la nuova versione di gcc. Come potrei dire allo make di usare la vecchia versione?Come utilizzare 2 diverse versioni di GCC su Linux Ubuntu e costringere MAKE a usare uno di loro

risposta

18

Make utilizza alcune variabili standard per determinare quali strumenti utilizzare, la variabile C-compiler si chiama "CC". È possibile impostare la variabile CC, sia direttamente nel tuo Makefile

CC=/opt/gcc-4.0.1/bin/gcc 

che va bene se si sta lavorando solo su di esso, o tutti hanno la stessa messa a punto. Oppure si può passare sulla riga di comando in questo modo:

make CC=/opt/gcc-4.0.1/bin/gcc 

la terza opzione è impostata /opt/gcc-4.0.1/bin prima di ogni altra cosa nel tuo percorso (che è il motivo per cui non funziona per si, la directory corrente non è nel percorso, in modo che il collegamento simbolico voi ci mettete non sarà considerata durante la ricerca)

export PATH=/opt/gcc-4.0.1/bin:$PATH 

per completezza, nella soluzione link simbolico, che avrebbe dovuto richiamare ./gcc per ottenere il giusta istanza di gcc, ma IMHO probabilmente non è la soluzione migliore.

HTH

+1

Se il pacchetto l'OP è la compilazione utilizza uno script 'configure', quindi impostando' cc' come variabile di shell esportato prima di eseguire 'configure' dovrebbe impostare nel generato' Makefile'. – caf

+1

rendono CC =/opt/gcc-4.0.1/bin/gcc funziona perfettamente ed è la soluzione più facile! Grazie – blackLabrador

Problemi correlati