PDA

Visualizza la versione completa : Percorso GCC (Era: Ho scazzato :)


chrimai
19-06-2004, 21:32
Ciao ragazzi....
Allora ho appena finito di compilare l'ultiva version di gcc ma.....anzichè inserire nelle opzioni la directory dove inserirla me l'ha messa di default in /usr/local/lib.
Come faccio ad usare la nuova versione quando digito gcc nella shell???
:eek:

kNemo
19-06-2004, 21:35
Dai il percorso completo per arrivare al nuovo gcc
poi ti crei un alias...

Laurentius
20-06-2004, 18:13
Crei un link simbolico in /usr/bin o dove ti pare.

Franco78
20-06-2004, 18:27
inserisci questo nel tuo file .bashrc che sta nella tua home

PATH=/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin
export PATH

se c'e' gia' qualcosa di simile devi fare in modo che /usr/local/bin compaia prima di /usr/bin come sopra

fai questo per ogni utente se ce ne sono e poi riavvia.
A questo punto se lanci il comando gcc -v ti indichera la nuova versione.

Laurentius
21-06-2004, 11:19
Mmmm... e questo cosa dovrebbe fare? lui ha messo l'eseguibile in /usr/local/lib, mi pare...

jam_NOTREGISTRED
21-06-2004, 11:28
Ehm, hai scazzato anche il titolo del thread, si'. :stordita:



Diamo dei titoli piu' chiari, senno' non si capisce una mazza, grazie.

Franco78
21-06-2004, 12:42
> Mmmm... e questo cosa dovrebbe fare? lui ha messo l'eseguibile in /usr/local/lib, mi pare...

Guarda che per me' lui si sta' confondendo. Non ho' mai sentito che un programma installi i binari di default in /usr/local/lib

> anzichè inserire nelle opzioni la directory dove inserirla me l'ha messa di default in /usr/local/lib

lui dice che non ha' dato l'opzione che specifica dove installare i binari quindi, di default sono stati installati in /usr/local/bin.

chrimai scusa, puoi' andare da shell in /usr/local/bin e lanciare il comando ./gcc -v e postare cosa ti appare.

Franco78
21-06-2004, 12:59
Laurentius, comunque anche se lui avesse per sbaglio e installato i binari del programma in /usr/local/lib (ma non credo sia cosi') basterebbe modificare il PATH cosi'

PATH=/bin:/usr/local/bin:/usr/local/lib:/usr/bin:/usr/X11R6/bin
export PATH

hai visto che ho' aggiunto /usr/local/lib. La variabile di ambiente PATH contiene gli indirizzi dove Linux cerca gli eseguibili.
Per vedere come' configurata la variabile PATH si lancia echo $PATH
Come e' impostata sopra Linux cerchera prima i binari in /bin ,poi in /usr/local/bin,etc...
Se per esempio io ho' una versione di gcc-3.3.1 in /usr/bin e gcc-3.3.2 in /usr/local/bin con la variabile che ho' impostato io Linux cerchera' prima in bin, poi in /usr/local/bin e qui trovera' la versione gcc-3.3.2 e usera questa senza andare avanti a controllare le altre directory.

Quando si compila un applicazione le sue librerie vengono messe di norma in /usr/local/lib e quindo bisogna andare a modificare il file /etc/ld.so.conf aggiungendo il percorso /usr/local/lib . Una volta fatto questo si deve lanciare da root il comando ldconfig -v.

Ciao

Franco78
21-06-2004, 13:35
> Crei un link simbolico in /usr/bin o dove ti pare

???

In /usr/bin c'e' gia' il compilatore vecchio, se ci crea un link tipo con < ln -s /usr/local/bin/gcc gcc > cancellera l'eseguibile.

> dove ti pare

Cosa vuol dire dove ti pare, ci sono delle directory ben precise dove Linux cerca i binari

Laurentius
22-06-2004, 09:04
In effetti, /usr/local/lib è strano, ma è possibile che gli abbia dato per errore quella.
Un link simbolico non si deve necessariamente chiamare gcc: io ad esempio in /usr/bin ho gcc-2.95 e gcc-3.0, più un link gcc che punta a gcc-2.95.
Ora, mettere /usr/local/lib in $PATH non mi sembra molto furbo, visto che ha un programma solo ma, probabilmente, molte librerie con permessi d'esecuzione.
"dove ti pare" vuol dire in un'altra directory che hai in $PATH: io userei /usr/bin (anche per motivi di distribuzione, debian), ma potrebbe usare anche /usr/local/bin (come fanno molte distro), oppure /bin (sconsiglio), oppure ~/bin (ce c'è), o altro.
Se dici:
"In /usr/bin c'e' gia' il compilatore vecchio, se ci crea un link tipo con < ln -s /usr/local/bin/gcc gcc > cancellera l'eseguibile."
No, ti dà semplicemente un messaggio di errore:
"ln: `gcc': Il file esiste"
o qualcosa di simile.

Loading