# [Risolto] problemi in emersione K qualcosa

## idum

Allora, prima di postare ho diligentemente cercato dappertutto e fatto qualche tentativo proposto in giro.

Il problema e' il seguente: quando lancio l'emersione di qualche elemento di Kde (nell'esempio kdeaddons-3.2.2, emerso durante il mio emerge -uDv world), mi compare il seguente errore:

```
group.cpp:107: warning: `getText' is deprecated (declared at

   /usr/kde/3.2/include/klineeditdlg.h:98)

/bin/sh ../../libtool --silent --mode=link --tag=CXX g++  -Wnon-virtual-dtor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -DNDEBUG -DNO_DEBUG -O2 -O2 -march=athlon-xp -fomit-frame-pointer -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -L/usr/X11R6/lib -L/usr/qt/3/lib -L/usr/kde/3.2/lib  -R /usr/kde/3.2/lib -R /usr/qt/3/lib -R /usr/X11R6/lib  -o atlantikdesigner  boardinfo.o designer.o editor.o main.o group.o -latlantikui -lkdegames -lkio

libtool: link: cannot find the library `/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/libstdc++.la'

```

La libreria richiesta sta in /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/

L'errore prima era piu' grave dato che mi chiedeva la libreria in /usr/lib/gcc-lib/[b]i383-pc-linux-gnu/

In primo luogo ho ovviamente rimosso e rinstallato libtool ultima versione.

Poi ho eseguito una strana operazione del tipo:

```

/sbin/fix_libtool_files.sh 'gcc -dumpversion' --oldarch i386-pc-linux-gnu

/sbin/fix_libtool_files.sh 'gcc -dumpversion' --oldarch i486-pc-linux-gnu

/sbin/fix_libtool_files.sh 'gcc -dumpversion' --oldarch i586-pc-linux-gnu

```

che ho trovato in un fix che poi ho visto era stato invalidato.

In giro non c'e' nulla che aiuti, o almeno io nulla ho trovato.

Nel bugzilla c'e' una nota a uno che aveva un errore simile che gli diceva di postare sul forum.

Che ne dite voi?

Pls datemi una mano senno' non riesco a completare l'emerge world e ad aggiornare il KDE alla ultima versione.

GrazieLast edited by idum on Thu May 20, 2004 1:34 pm; edited 1 time in total

----------

## alberto

Anche io ho lo stesso problema nell'emerge di kdemultimedia-3.2.2 che , guardacaso, e' richiesto dall'emerge kdeaddons-3.2.2 che hai fatto tu.

Quindi oserei dire che l'incriminato e' ,appunto, kdemultimedia-3.2.2.

questo e' parte del mio output

```

libtool: link: cannot find the library `/usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.2/libstdc++.la'

make[3]: *** [juk] Error 1

make[3]: Leaving directory `/var/tmp/portage/kdemultimedia-3.2.2-r1/work/kdemultimedia-3.2.2/juk'

make[2]: *** [all-recursive] Error 1

make[2]: Leaving directory `/var/tmp/portage/kdemultimedia-3.2.2-r1/work/kdemultimedia-3.2.2/juk'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/var/tmp/portage/kdemultimedia-3.2.2-r1/work/kdemultimedia-3.2.2'

make: *** [all] Error 2

!!! ERROR: kde-base/kdemultimedia-3.2.2-r1 failed.

!!! Function kde_src_compile, Line 129, Exitcode 2

!!! died running emake, kde_src_compile:make

 
```

Chiaramente anche io ho /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.2/libstdc++.la

che e' il file che sembrerebbe non essere trovato.

Ho anche provato a installare prima tutte le altre robbe ma adesso mi rimangono solo cose che hanno il kdemultimedia-3.2.2 come dipendeza.

Neppure io sono riuscito a trovare alcuna soluzione.

Che sara' mai?

Ciao.

Alberto.

PS. Beh date una mano anche a me.... dopo un giorno di emerge -UDav world bloccarsi cosi non e' mica bello  :Smile: 

----------

## fedeliallalinea

Cosa dice il comando 

```
# gcc-config --get-current-profile
```

----------

## motaboy

x idum:

prova a usare una cosa del genere:

```

/sbin/fix_libtool_files.sh 3.3.2

```

x alberto:

Non ho capito una cosa, hai la libreria in /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.2/libstdc++.la  o ce l'hai in una directory diversa?

Bye!

----------

## fedeliallalinea

 *motaboy wrote:*   

> Non ho capito una cosa, hai la libreria in /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.2/libstdc++.la  o ce l'hai in una directory diversa?

 

Si penso di si' non e' al primo che succede! Potrebbe fare un link ma non credo sia la soluzione migliore.

----------

## idum

Per quanto riguarda il problema della libreria in i386, è sensato il suggerimento di aggiornare gli script di libtool con l'attuale versione del compilatore, con la serie di comandi che ho scritto sopra.

@ fedeliallalinea:

```

gcc-config --get-current-profile

i686-pc-linux-gnu-3.3.3

```

Il compilatore e' il 3.3.3 anche se lo script lo cerca come se fosse il 3.3.2

D'altro canto ho aggiornato tutto quanto con emerge -uDv system e dovrei avere le ultime versioni di tutti i compilatori, almeno in teoria.

@motaboy:

 il comando 

```

/sbin/fix_libtool_files.sh 3.3.2 

```

che proponi cosa farebbe? mi simula un downgrade alle versioni 3.3.2? non vorrei che poi cosi' perdo la compatibilità in altri pacchetti. Prima di lanciarlo preferisco che mi tranquillizzi su questa cosa  :Smile: 

----------

## motaboy

 *idum wrote:*   

> 
> 
> @motaboy:
> 
>  il comando 
> ...

 

No, è IL comando corretto.

Se vuoi ti spiego tutta la teoria.

Bye!

----------

## randomaze

 *motaboy wrote:*   

> Se vuoi ti spiego tutta la teoria.
> 
> 

 

Beh il libro di testo già lo ha:

```

#less /sbin/fix_libtool_files.sh

```

----------

## motaboy

 :Laughing:  Però non tutti parlano il bashano e l'awkiano.  :Laughing: 

Bye!

----------

## alberto

Rispondo a tutti.

```

bash-2.05b# gcc-config --get-current-profile

i686-pc-linux-gnu-3.3.2

```

Per quando riguarda la libreria in

/usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.2/libstdc++.la

Si la ho li

Se do

```

bash-2.05b# /sbin/fix_libtool_files.sh 3.3.2

 * Scanning libtool files for hardcoded gcc library paths...

```

Adesso riprovo a compilare?

Ci provo.

----------

## alberto

Solito errore per me  :Sad: 

```

libtool: link: cannot find the library `/usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.2/libstdc++.la'

make[3]: *** [juk] Error 1

make[3]: Leaving directory `/var/tmp/portage/kdemultimedia-3.2.2-r1/work/kdemultimedia-3.2.2/juk'

make[2]: *** [all-recursive] Error 1

make[2]: Leaving directory `/var/tmp/portage/kdemultimedia-3.2.2-r1/work/kdemultimedia-3.2.2/juk'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/var/tmp/portage/kdemultimedia-3.2.2-r1/work/kdemultimedia-3.2.2'

make: *** [all] Error 2

!!! ERROR: kde-base/kdemultimedia-3.2.2-r1 failed.

!!! Function kde_src_compile, Line 129, Exitcode 2

!!! died running emake, kde_src_compile:make

```

Mi sto innervosendo... grrrr   :Evil or Very Mad: 

E adesso che faccio?

Ciao.

Alberto.

----------

## motaboy

 *alberto wrote:*   

> Rispondo a tutti.
> 
> ```
> 
> bash-2.05b# gcc-config --get-current-profile
> ...

 

E' strano il fatto che tu ce l'hai in i386-pc-linux-gnu anche se sembra che il compilatore dice di essere di tipo i686-pc-linux-gnu. La libreria in /usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.2/libstdc++.la in teoria non dovrebbe esserci più ma dovrebbe esserci la nuova in  /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/libstdc++.la

Se do

```

bash-2.05b# /sbin/fix_libtool_files.sh 3.3.2

 * Scanning libtool files for hardcoded gcc library paths...

```

[/quote]

Come vedi sembra che non trovi niente sotto i386.

dovrebbe darti qualche riga in più:

```

 * Scanning libtool files for hardcoded gcc library paths...

 *   Scanning /lib...

 *   Scanning /usr/lib...

 *   Scanning /opt/blackdown-jdk-1.4.1/jre/lib/i386...

 *   Scanning /opt/fdo/lib...

 *   Scanning /usr/X11R6/lib...

 *   Scanning /usr/games/lib...

 *   Scanning /usr/kde/3.2/lib...

 *   Scanning /usr/local/lib...

 *   Scanning /usr/qt/3/lib...

```

Potresti provare a dare questo comando:

```

fix_libtool_files.sh 3.3.2 --oldarch i386-pc-linux-gnu

```

Bye!

----------

## alberto

No fermi tutti

Sono ceco e stupido ; (

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

Sta in i686 avete raggione voi ma kdemultimedia la cerca in 386.. giusto?

emmm e adesso che faccio?

Scusatemi per il tempo che vi faccio perdere  :Sad: 

----------

## fedeliallalinea

Non e' molto pulito ma potresti fare

```
# cd /usr/lib/gcc-lib

# ln -s i386-pc-linux-gnu i686-pc-linux-gnu
```

----------

## randomaze

 *alberto wrote:*   

> Sta in i686 avete raggione voi ma kdemultimedia la cerca in 386.. giusto?
> 
> 

 

Fammi indovinare, hai messo uno stage3 della 2004.1?

----------

## motaboy

 *alberto wrote:*   

> No fermi tutti
> 
> Sono ceco e stupido ; (
> 
> /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2
> ...

 

Ok, ora tutto quadra, usa il comando che ti ho detto prima e dovrebbe andare a posto.

Bye!

----------

## alberto

 *motaboy wrote:*   

> 
> 
> Ok, ora tutto quadra, usa il comando che ti ho detto prima e dovrebbe andare a posto.
> 
> Bye!

 

Em mica me lo ripeti che mi sono confuso? : (

Preferisco fare le cose pulite....dopo 3 giorni di compilare.. sapete com'e' no? : )

----------

## alberto

 *randomaze wrote:*   

>  *alberto wrote:*   Sta in i686 avete raggione voi ma kdemultimedia la cerca in 386.. giusto?
> 
>  
> 
> Fammi indovinare, hai messo uno stage3 della 2004.1?

 

Indovinato!

Ma poi mi e' venuta l pazzia di ricompilarmi tutto : =)

----------

## randomaze

 *alberto wrote:*   

> Ma poi mi e' venuta l pazzia di ricompilarmi tutto : =)

 

Ma hai anche fatto un emerge -e world prima oppure lo stage3 é rimasto tale e hai compilato sopra?

/me cerca di capire lo stato dei live 2004.1 e, sopratutto, come uscirne!

----------

## alberto

Ho ricompilato il kernel per la mia cpu (athlon) col supporto ntfs eppoi ho dato un emerge -UDav.

Consderando che i drive nv mascerati mi davano problemi ho fatto anche la cartellina /etc/portage conb dentro i file di testo per evitare che mi riportasse in downgrade nvidia-kernel e nvidia-glx.

Ma adesso mi mancano circa 6 pacchetti del kde per colpa di questo fetenteissimo kdemultimedia-3.2.2.

Al momento ho mezzo kde 3.2.1 e mezzo 3.2.2  :Smile: 

----------

## idum

Allora, mi scuso perche' soloa desso ho potuto connettermi.

Ho risolto personalmente la cosa! finally.

Alberto, devi combinare entrambi gli aiuti.

I primi comandi che ho postato sopra, del tipo:

/sbin/fix_libtool_files.sh 'gcc -dumpversion' --oldarch i386-pc-linux-gnu 

/sbin/fix_libtool_files.sh 'gcc -dumpversion' --oldarch i486-pc-linux-gnu 

/sbin/fix_libtool_files.sh 'gcc -dumpversion' --oldarch i586-pc-linux-gnu 

ti servono per sistemare le chiamate alle vecchie architetture

il comando poi 

/sbin/fix_libtool_files.sh 3.3.2 

ti sistema le ultime incongruenze con il compilatore aggiornato gcc 3.3.3 (se non ho capito male)

Esegui dunque tutti e quattro i comandi e ti dovrebbe tornare tutto a posto.

A me e' andato a posto insomma  :Smile: 

Grazie a tutti

----------

## randomaze

 *idum wrote:*   

> A me e' andato a posto insomma 
> 
> Grazie a tutti

 

idum, per favore puoi dare una lettura a questo post per vedere se sono riuscito a capire esattamente quello che hai fatto?

----------

## idum

La soluzione "sporca" pero' non va bene, perche' non risolve il problema della chiamata alle librerie 3.3.2 quando hai il compilatore gcc 3.3.3.

Quindi ad occhio mi sa che conviene sempre seguire la riga pulita, soprattutto se prima uno ha fatto un emerge -uDv system che gli ha aggiornato il compilatore.

Altre note le metto in coda al post che mi hai segnalato.

----------

## motaboy

Ok, ripeto x alberto

dovrebbe bastare questo:

```

fix_libtool_files.sh 3.3.2 --oldarch i386-pc-linux-gnu 

```

Bye!

----------

## motaboy

Visto che mi sono offeso perchè nessuno mi ascolta adesso vi beccate tutta la teoria dietro questa "semplice" cosa.

Le librerie condivise (shared object) sono formate da 2 files: i ".la" e i ".so", mentre i ".so" contengono il codice vero e proprio della libreria, i ".la" contengono dati importanti come i nomi della libreria e soprattutto le librerie di cui queste necessitano (devono essere linkate) per funzionare. E quindi come una catena.

Nel C++ la libreria principale è la libstdc++. 

Quando ricompilate una nuova versione del compilatore (gcc) esso contiene anche questa libreria che come avete notato viene messa in un directory che ha come parente il modello dell'host (i386, i586, ...) mentre come sottodirectory la versione del compilatore.

Essendo tutte le librerie che utilizzano il c++ compilate col gcc precedente (per esempio il 3.2 e con arch i386) esse hanno nel loro ".la" riportato che necessitano della libreria /usr/lib/gcc-lib/i386-pc-linux-gnu/3.2/libstdc++.la.

Adesso aggiorniamo gcc mettendo come host (nel etc/make.conf) i686 e alla versione 3.3.3.

Cosa succede che emerge rimuove il vecchio gcc e quindi la libreria in questione. perciò ogni programma che necessita di una libreria che utilizza la libstdc++ del vecchio compilatore non la trova e il linking in fase di compilazione (ma anche in fase di esecuzione) riporta errore.

Il programma fix_libtool_files.sh è un wrapper al programma fornito col gcc fixlafiles.awk.

questo programma appunto ricerca tutti i .la che usano l'arch precedente (--oldarch) e la versione precedente (il primo parametro, nel nostro caso: "3.2") e li aggiornano con i nuovi valori utilizzati dal gcc presente adesso sul sistema.

Bye!

----------

## alberto

Grazie a voi sono riuscito.  :Smile: )

----------

## fedeliallalinea

 *alberto wrote:*   

> Grazie a voi sono riuscito. )

 

Ottimo  :Very Happy: 

----------

## randomaze

 *motaboy wrote:*   

> Visto che mi sono offeso perchè nessuno mi ascolta adesso vi beccate tutta la teoria dietro questa "semplice" cosa.
> 
> 

 

Ma no, non devi offenderti... 

(beh, se tutte le volte che ti offendi produci spiegazioni dettagliate e comprensibili come questa offenditi pure  :Razz:  )

----------

## motaboy

 :Laughing: 

----------

## Ghostraider

Scusate se riapro un post simile ma oggi e la prima gionata libera che ho...vorrei tentare di risolvere il problemino...

A me da un errore simile dopo l'emerge di kdebase, ma anche degli altri pacchettti di kde

```
!!! ERROR : media-libs/giflib-4.1.0-r3 failed 

!!! Function src_compile, Line 34, Exitcode 2 

!!! emake failed 

Qualche differenza o seguo la stessa soluzione?
```

Ora ho riemerso gcce libtools, ma niente...il fatto è che parla di media_libs...seguo la stessa soluzione da voi proposta ? O devo segiure altre strade ?

----------

## Ghostraider

Scusate scustae scusate  :Mad:  ...ho fatto casino con le finestre e ho riscritto in un'altro topic !

Chiedo umilmente perdono   :Crying or Very sad:  !

Sono in quest'altro topic https://forums.gentoo.org/viewtopic.php?t=235730&postdays=0&postorder=asc&start=25

----------

## opo

Grazie ragazzi, a distanza di qualche mese questo post e' ancora molto utile per i 'pipponi' come me!

opo

----------

## motaboy

In verita' il bug e' negli ebuild di gcc, infatti dovrebbe essere fatto tutto automaticamente.

----------

