# GCC - Errore nel passaggio di versione

## cagnaluia

Ciao,

come faccio per sapere quali GCC sono e specialmente ERANO installati sul mio sistema.

Credo di aver combianto un bel pasticcio.

Ho installato lo stage3 del liveCD2005.0

Poi ho dato un emerge sync.. e di li un emerge -uD system

questo mi ha aggiornato gcc a i586-pc-linux-gnu-3.3.5-20050130

poi, non contento.. ho dato un emerge ai gcc-3.4.4.

Ora, io nn so come fare.. .ho seguito il discorso del passaggio di versione GCC.. ma qualcosa è andato storto.

ho dato un

```

 * gcc-config i686-pc-linux-gnu-3.4.4

 * source /etc/profile

```

ma è comparso questo brutto errore:

/usr/bin/python: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

quindi ho provato a fare:

fix_libtool_files.sh i686-pc-linux-gnu-3.4.4 (anche 3.4.4 solo)

ma nn è cambiato nulla.. 

poi leggendo in giro anche un: ldconfig

ora, addirittura quando rifaccio:

```

gcc-config i686-pc-linux-gnu-3.4.4

 * Switching to i686-pc-linux-gnu-3.4.4 compiler...

/usr/bin/python: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

 * /usr/bin/gcc-config: Could not get portage CHOST!

/usr/bin/gcc-config: line 1: env: command not found

 * /usr/bin/gcc-config: Could not get portage CHOST!

/usr/bin/python: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

 * /usr/bin/gcc-config: Could not get portage CHOST!

/usr/bin/python: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

 * /usr/bin/gcc-config: Could not get portage CHOST!

/usr/bin/python: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

 * /usr/bin/gcc-config: Could not get portage CHOST!                      [ ok ]

```

 :Crying or Very sad:   :Crying or Very sad:   :Crying or Very sad: 

yèp

----------

## CarloJekko

ho aperto un post io ieri !!!  :Wink: 

https://forums.gentoo.org/viewtopic-t-344530.html?sid=fed344dee07b0b8756f42ade5c60557f

P:S:

fix_libtool_files.sh i686-pc-linux-gnu-3.3.5-20050130

----------

## cagnaluia

 *CarloJekko wrote:*   

> ho aperto un post io ieri !!! 
> 
> https://forums.gentoo.org/viewtopic-t-344530.html?sid=fed344dee07b0b8756f42ade5c60557f
> 
> P:S:
> ...

 

ho visto! :Very Happy: 

infatti l'ho letto.. e ho fatto proprio quel passaggio.. 

ma nn cambia nulla...

----------

## Cazzantonio

e allora continua su quello!

Perché aprire un altro topic identico?

----------

## cagnaluia

 *Cazzantonio wrote:*   

> e allora continua su quello!
> 
> Perché aprire un altro topic identico?

 

oddio.. quello suo era per un altro problema.. risolto.

credo

----------

## GhePeU

sys-libs/libstdc++-v3 ce l'hai?

----------

## cagnaluia

 *GhePeU wrote:*   

> sys-libs/libstdc++-v3 ce l'hai?

 

in portage...? si

emerso.. non lo so.. nn posso fare emerge

----------

## GhePeU

è quello il problema

python compilato con gcc 3.3 è linkato a libstdc++.5, mentre il gcc 3.4 ha una nuova versione incompatibile la .6, per questo motivo quando ho installato io il gcc 3.4 libstdc++-v3 era richiesta... e invece adesso sembra che abbiano tolto la dipendenza

cerco un po' in bugzilla

EDIT: TA-DAAN

qualcuno ha fatto la cazzata...

https://bugs.gentoo.org/show_bug.cgi?id=84961

----------

## cagnaluia

beh.. grazie per le info...

ma.. davvero... nn so come continuare. :Embarassed: 

----------

## GhePeU

hai detto che hai usato lo stage 3, giusto? prova così (non garantisco niente, però)

* cerca il pacchetto del gcc, estrai libstdc++.so.5.0.6 (o 5.0.x, se non c'è)

* copia il file in /usr/lib/libstdc++-v3/libstdc++.so.5.0.6 (5.0.x)

* crea un link /usr/lib/libstdc++-v3/libstdc++.so.5 -> libstdc++.so.5.0.6 (5.0.x)

* dai in console: export LD_LIBRARY_PATH=/usr/lib/libstdc++-v3/

* prova emerge, se funziona "emerge libstdc++-v3"

----------

## cagnaluia

 *GhePeU wrote:*   

> hai detto che hai usato lo stage 3, giusto? prova così (non garantisco niente, però)
> 
> * cerca il pacchetto del gcc, estrai libstdc++.so.5.0.6 (o 5.0.x, se non c'è)
> 
> * copia il file in /usr/lib/libstdc++-v3/libstdc++.so.5.0.6 (5.0.x)
> ...

 

faccio un find all'interno di gcc-3.4.4 ma nn trova nulla..

facciamo così.. torniamo indietro? 

al 3.3.5? che funzioni?

----------

## GhePeU

devi cercarlo nel pacchetto gcc-3.3.x, il problema è proprio che gcc-3.4.x non include più quella libreria

----------

## silian87

cmq con ~x86 quella libreria puoi emergerla...

----------

## CarloJekko

fai

fix_libtool_files.sh 3.3.5-20050130 

vedi se funge.Se no prova con il link che fai tu (vedi il mio 3ed)

----------

## cagnaluia

MITTTIKKKOOOO!!!!!

sto emergendo sto emergendo!!!!!huahuahuauhauhuheuheuheuheuhuhhuhuhu

!!!! MITTIKKOOOO

GhePeU... cosa fare senza di te!?

vabé.. attendiamo... la fine dell'emerge.

poi? 

cosa faccio?

ho risolto? darò un emerge glibc binutils?

----------

## GhePeU

se il file che hai copiato non era esattamente libstdc++.so.5.0.6 cancellalo, per non lasciare due versioni della libreria in giro

poi potresti ricompilare tutto il sistema, in modo che a dipendere da libstdc++.so.5 siano solo gli eventuali pacchetti binari... se non l'hai già fatto ricompila comunque glibc e libtool

----------

## cagnaluia

 *GhePeU wrote:*   

> se il file che hai copiato non era esattamente libstdc++.so.5.0.6 cancellalo, per non lasciare due versioni della libreria in giro
> 
> poi potresti ricompilare tutto il sistema, in modo che a dipendere da libstdc++.so.5 siano solo gli eventuali pacchetti binari... se non l'hai già fatto ricompila comunque glibc e libtool

 

vabè.. era il  libstdc++.so.5.0.7... cmq ok.

ricompilare TUTTO ???... ho una epia 5000.... brr.. intanto posso lasciare l'export... ?!

----------

## GhePeU

beh, a rigore non è necessario ricompilare tutto, perchè i pacchetti "vecchi" adesso puntano alla libstdc++ installata da libstdc++-v3 mentre quelli che compilerai dipenderanno dalla nuova... il problema riguarda solo il software c++ ed è che probabilmente non potrai mischiare, ad esempio, qt "vecchie" con kde "nuovo" o simili

l'export non serve più perchè libstdc++-v3 installa un file in /etc/env.d/, quindi dopo che ha finito cancella libstdc++.so.5.0.7 e lancia env-update

----------

## cagnaluia

tutto bene.. ho ricompilato.

ma quando emerge samba:

```

creating libtiff.la

/bin/sed: can't read /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5/libstdc++.la: No such file or directory

libtool: link: `/usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5/libstdc++.la' is not a valid libtool archive

```

ma io NON ho un i386-pc-linux-gnu ?!??!!!!! ho un i686....etcetc..[/quote]

----------

## fabius

Ci sono milioni di post per lo stesso problema! E' tanto difficile fare qualche ricerca? Lancia fix_libtool_files.sh e leggi le istruzioni

----------

## cagnaluia

 *fabius wrote:*   

> Ci sono milioni di post per lo stesso problema! E' tanto difficile fare qualche ricerca? Lancia fix_libtool_files.sh e leggi le istruzioni

 

non è come sembra.. 

credi che nn lo abbia fatto.. quante 10, 11, 34, 1000volte

fix_libtool_files.sh 3.3.5 --oldarch i586-pc-linux-gnu

???

----------

## fabius

 *cagnaluia wrote:*   

> 
> 
> ```
> 
> creating libtiff.la
> ...

 

Hai provato invece

```
fix_libtool_files.sh 3.3.5 --oldarch i386-pc-linux-gnu
```

Cosa ti da

```
gcc-config -l
```

----------

## btbbass

AHHHRGGRGGGGGG....

mi è successa una cosa simile, ma non upgradando da gcc 3.3, bensì dal gcc 3.4.3.20050110-r2 al 3.4.4, ed ora mi dice che python non va, non trova la sua cacchio di libreria libstdc++.so.6, ch in realtà ho:

```
slocate  libstdc++.so.6

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/libstdc++.so.6.0.3

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/libstdc++.so.6

/opt/OpenOffice.org/program/libstdc++.so.6

```

Che fare????

EDIT: ho risolto leggendo meglio i 3d, facendo un semplice

```

export LD_LIBRARY_PATH=/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/   

```

P.S: avevo già fatto tutti fix_libtools possibili immaginabili!!!

Spero vada tutto ora!

----------

## fabius

 *btbbass wrote:*   

> AHHHRGGRGGGGGG....
> 
> mi è successa una cosa simile, ma non upgradando da gcc 3.3, bensì dal gcc 3.4.3.20050110-r2 al 3.4.4, ed ora mi dice che python non va, non trova la sua cacchio di libreria libstdc++.so.6, ch in realtà ho:
> 
> Che fare????

 

Qual è l'errore preciso? In teoria dovrebbe bastare

```
fix_libtool_files.sh 3.4.3-20050110
```

----------

## cagnaluia

 *fabius wrote:*   

>  *cagnaluia wrote:*   
> 
> ```
> 
> creating libtiff.la
> ...

 

1. fatto, proprio ora.

2. di seguito:

```

[1] i586-pc-linux-gnu-3.3.5-20050130

[2] i586-pc-linux-gnu-3.3.5-20050130-hardened

[3] i586-pc-linux-gnu-3.3.5-20050130-hardenednopie

[4] i586-pc-linux-gnu-3.3.5-20050130-hardenednopiessp

[5] i586-pc-linux-gnu-3.3.5-20050130-hardenednossp

[6] i686-pc-linux-gnu-3.4.4 *

[7] i686-pc-linux-gnu-3.4.4-hardened

[8] i686-pc-linux-gnu-3.4.4-hardenednopie

[9] i686-pc-linux-gnu-3.4.4-hardenednopiessp

[10] i686-pc-linux-gnu-3.4.4-hardenednossp

```

----------

## fabius

Quanta roba hai compilato con il 3.4? Spero niente. Come avrai capito passare da 3.3 a 3.4 merita un pò di attenzione  :Smile:  ovvero è meglio evitare di avere librerie compilate con entrambi i compilatori. Quindi il passaggio deve essere definitivo (a meno di risolvere i problemi via via che compaiono). Parlo in teoria perché sto ancora con il 3.3. Prova a switchare su 3.3 e ridai fix_libtool_files.sh e prova a compilare: vediamo se almeno questo si risolve

----------

## btbbass

 *fabius wrote:*   

>  *btbbass wrote:*   AHHHRGGRGGGGGG....
> 
> mi è successa una cosa simile, ma non upgradando da gcc 3.3, bensì dal gcc 3.4.3.20050110-r2 al 3.4.4, ed ora mi dice che python non va, non trova la sua cacchio di libreria libstdc++.so.6, ch in realtà ho:
> 
> Che fare???? 
> ...

 

Allora praticamente ho risolto solo in una console, dando il comando 

```

export LD_LIBRARY_PATH=./usr/lib/gcc/i686-pc-linux-gnu/3.4.4/

```

e se do un 

```
echo $LD_LIBRARY_PATH

```

mi restituisce giustamente :

```

/usr/lib/gcc/i686-pc-linux-gnu/3.4.4/

```

e tutto funzia

ma se do nelle altre console un

```
echo $LD_LIBRARY_PATH

```

mi restituisce una riga vuota

Come fare per risolvere?

(Ho provato on un env-update, ma nulla da fare)

----------

## cagnaluia

 *fabius wrote:*   

> Quanta roba hai compilato con il 3.4? Spero niente. Come avrai capito passare da 3.3 a 3.4 merita un pò di attenzione  ovvero è meglio evitare di avere librerie compilate con entrambi i compilatori. Quindi il passaggio deve essere definitivo (a meno di risolvere i problemi via via che compaiono). Parlo in teoria perché sto ancora con il 3.3. Prova a switchare su 3.3 e ridai fix_libtool_files.sh e prova a compilare: vediamo se almeno questo si risolve

 

ok, ora sembra funzionare!

i386...!!!!!! io continuavo a scrivere i586!!!!! perchè nn avevo nulla in i386.... e invece  :Shocked:  .. era proprio i386 la radice del vecchio gcc.. 

mi pare impossibile.. ma allora parchè il gcc-config -l mi mostra la lista di gcc con i586 e i686 !??!!?

fatto stà che ora sta proseguendo correttamente la compialzione!

----------

## fabius

 *btbbass wrote:*   

> Allora praticamente ho risolto solo in una console, dando il comando 
> 
> ...
> 
> mi restituisce una riga vuota
> ...

 

Infatti la modifica rimane a livello di console. Cosa hai in /etc/env.d/05gcc? Se in LDPATH c'è il percorso giusto basta un

```
source /etc/profile
```

per aggiornare le variabili ambiente

----------

## fabius

 *cagnaluia wrote:*   

> mi pare impossibile.. ma allora parchè il gcc-config -l mi mostra la lista di gcc con i586 e i686 !??!!?
> 
> fatto stà che ora sta proseguendo correttamente la compialzione!

 

Probabilmente hai installato il gcc compilato per i386, tu hai settato prima i586 ed installato il gcc 3.3, poi hai settato i686 ed installato il 3.4: troppi cambiamenti gringo  :Very Happy: 

Quindi non hai ancora usato il 3.4 per compilare? Se vuoi fare il passaggio ti consiglio una delle guide sul wiki: ricordati che dovrai usare fix_libtool_files.sh per aggiornare a i686 e per cambiare la versione del compilatore  :Wink: 

----------

## cagnaluia

 *fabius wrote:*   

>  *cagnaluia wrote:*   mi pare impossibile.. ma allora parchè il gcc-config -l mi mostra la lista di gcc con i586 e i686 !??!!?
> 
> fatto stà che ora sta proseguendo correttamente la compialzione! 
> 
> Probabilmente hai installato il gcc compilato per i386, tu hai settato prima i586 ed installato il gcc 3.3, poi hai settato i686 ed installato il 3.4: troppi cambiamenti gringo 
> ...

 

ok, ma ora sono con il compilatore 3.4.4! almeno gcc-conf dice di si.. posso fare altre prove?

fix_libtool_files.sh.... lho usato poco fa. 

è tutto corretto, dunque.

----------

## fabius

 *cagnaluia wrote:*   

> ok, ma ora sono con il compilatore 3.4.4! almeno gcc-conf dice di si.. posso fare altre prove?
> 
> fix_libtool_files.sh.... lho usato poco fa. 
> 
> è tutto corretto, dunque.

 

Quindi hai dato fix_libtool_files.sh due volte: una per 3.3.5 con i386 sotto gcc 3.3 ed una seconda volta sotto gcc 3.4 per 3.3.5-2005 con i586? Se sì, dovresti essere pronto ad emergere tutto  :Laughing: 

----------

