# [GCC] eix ne compile plus [réouvert]

## Ascodas

Salut,

J'ai remis en place gcc 3.3.6 pour compiler qemu dernièrement, et depuis eix ne fonctionne plus et ne compile plus :

```

make[2]: entrant dans le répertoire « /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8/contrib »

make[2]: Rien à faire pour « all ».

make[2]: quittant le répertoire « /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8/contrib »

make[2]: entrant dans le répertoire « /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8 »

make[2]: Rien à faire pour « all-am ».

make[2]: quittant le répertoire « /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8 »

make[1]: quittant le répertoire « /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8 »

src/eix: /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6: version `CXXABI_1.3.1' not found (required by src/eix)

!!! ERROR: app-portage/eix-0.8.8 failed.

Call stack:

  ebuild.sh, line 1613:   Called dyn_compile

  ebuild.sh, line 970:   Called qa_call 'src_compile'

  environment, line 1295:   Called src_compile

  eix-0.8.8.ebuild, line 20:   Called die

!!! generating eixrc failed

!!! If you need support, post the topmost build error, and the call stack if relevant.

!!! A complete build log is located at '/var/tmp/portage/app-portage/eix-0.8.8/temp/build.log'.
```

Je n'ai compilé que qemu et ses dépendances avec gcc 3.3.6, ensuite j'ai rebasculé en 4.1.1.

Aujourd'hui j'ai lancé un sync et un emerge system (update 3.3.6 en 3.4.6) avec la v 4.1.1, voici ce que me donne gcc-config :

```
 [1] x86_64-pc-linux-gnu-3.3.6

 [2] x86_64-pc-linux-gnu-3.4.6

 [3] x86_64-pc-linux-gnu-3.4.6-hardened

 [4] x86_64-pc-linux-gnu-3.4.6-hardenednopie

 [5] x86_64-pc-linux-gnu-3.4.6-hardenednopiessp

 [6] x86_64-pc-linux-gnu-3.4.6-hardenednossp

 [7] x86_64-pc-linux-gnu-4.1.1 *
```

j'ai bien essayé fix_libtool_files sur les deux versions de gcc sans succès.

J'ai remarqué aussi que amarok ne compile plus, et je sens que c'est lié.

Alors je vous demande de l'aide pour remettre ma gentoo en état, avant que je la mette en carafe complètement.

Merci.Last edited by Ascodas on Thu Feb 15, 2007 12:44 pm; edited 2 times in total

----------

## yoyo

 *Ascodas wrote:*   

> 
> 
> ```
> src/eix: /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6: version `CXXABI_1.3.1' not found (required by src/eix)
> ```
> ...

 As-tu installé la libstdc++-v3 ??

D'après le Guide de mise à jour de GCC pour Gentoo :  *Quote:*   

> Pour permettre la compatibilité avec les anciennes applications binaires C++, sys-libs/libstdc++-v3 doit être installé sur votre système.

 

Enjoy !

----------

## Ascodas

Et bien j'avais suivi cette piste mais au choix j'avais préféré installer la libstdc++ car la v3 est faite pour executer des binaires compilés avec des versions 3.3.* il me semble ?

 *Quote:*   

> Important : Dans le cas où vous mettiez GCC à jour à partir de la version 3.3, vous devez lancer un emerge --oneshot sys-libs/libstdc++-v3 pour fournir la compatibilité avec les anciennes applications binaires C++.
> 
> 

 

pour info je n'avais ni la libstdc++ ni la libstdc++v3 d'installée.

----------

## Ascodas

méa culpa j'avais bien une 3.3.6 de départ, j'emerge la v3 ...

----------

## Ascodas

d'autres part je vois pas pouquoi eix aurait besoin de la libstdc puisque mon systeme etait full gcc 4.1.1 avant que je n'installe la v 3.3.6 pour qemu.

l'installation de la libstdc++-v3 n' a rien changer au problème.

----------

## netfab

Salut,

L'erreur est provoquée par cette ligne dans l'ebuild :

```

src/eix --dump-defaults >eixrc || die "generating eixrc failed"

```

Une fois l'erreur affichée et l'installation plantée, que donne :

```

# ldd /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8/src/eix

```

Si eix est compilé avec gcc 4.1.1, il devrait être lié à :

 *Quote:*   

> /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/libstdc++.so.6

 

et non :

 *Quote:*   

> /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6

 

 *Quote:*   

> 
> 
> Je n'ai compilé que qemu et ses dépendances avec gcc 3.3.6, ensuite j'ai rebasculé en 4.1.1. 
> 
> 

 

env-update && source /etc/profile oublié après le switch de compilateur ?

----------

## Ascodas

Je crois bien que c'est bien vu netfab :

```

amd64 thomas # ldd /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8/src/eix

/var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8/src/eix: /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6: version `CXXABI_1.3.1' not found (required by /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8/src/eix)

        libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6 (0x00002b64e8a87000)

        libm.so.6 => /lib/libm.so.6 (0x00002b64e8c77000)

        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002b64e8dcc000)

        libc.so.6 => /lib/libc.so.6 (0x00002b64e8eda000)

        /lib64/ld-linux-x86-64.so.2 (0x00002b64e896a000)

amd64 thomas # find / -name libstdc++.so.6

/usr/lib32/openoffice/program/libstdc++.so.6

/usr/lib64/gcc/x86_64-pc-linux-gnu/3.4.6/32/libstdc++.so.6

/usr/lib64/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6

/usr/lib64/gcc/x86_64-pc-linux-gnu/4.1.1/32/libstdc++.so.6

/usr/lib64/gcc/x86_64-pc-linux-gnu/4.1.1/libstdc++.so.6

amd64 thomas #  
```

Je dois relinker libstdc++.so.6, comment dois je procéder ? car quelle libstdc dois linker vers la /usr/lib64/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6 ?

----------

## Ascodas

```
revdep-rebuild --library libstdc++.so.6 -- -p -v
```

me donne une sacrée tartine a recompiler, est ce la bonne manière de procéder ?

----------

## netfab

Normalement, tu n'as pas à le faire manuellement, il y a quelque chose qui ne tourne pas rond.

Fais voir ton emerge --info, et essaye ceci :

```

# gcc-config x86_64-pc-linux-gnu-4.1.1

# env-update 

# source /etc/profile

# fix_libtool_files.sh 3.4.6

# emerge --oneshot -av libtool

# emerge eix

```

Tu dis que tu as recompilé ton system ? Tu es sûr que tu étais avec la 4.1.1 à ce moment ?

----------

## Ascodas

Et bien en suivant la doc j'ai fait la suite de commandes que tu m'as donné et sans succès, ni pour eix ni pour amarok :

```
[thomas@amd64 ~]$ amarokapp

amarokapp: /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6: version `CXXABI_1.3.1' not found (required by /usr/kde/3.5/lib64/libkhtml.so.4)

amarokapp: /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6: version `CXXABI_1.3.1' not found (required by /usr/lib64/libofa.so.0)

[thomas@amd64 ~]$
```

Et pourtant je suis a 100% sur que tout été compilé avec gcc 4, j'avais fais le e system et le e world dès qu'il a été dans l'arbre ~64 de portage et depuis tout tournait comme un charme.

Je suis aussi sur d'avoir oublié le source /etc/profile ...

mais bon je n'ai pas recompiler ni eix ni amarok depuis mon installation de gcc-3.3.6 puis 3.4.6 ...

je crois que je suis bon pour tout recompiler ...

----------

## Ascodas

Bon je suis un peu bloqué,

```
revdep-rebuild --library libstdc++.so.6
```

plante sur amarok, eix compile toujours pas.

Question pour m'aider à comprendre ce qui s'est passé :

Pourquoi alors que j'ai desinstallé gcc 3.3, que je defini bien mon compilateur comme la 4.1.1 (source /etc/profile + env-update), que libtool est emergé avec la 4.1.1, eix veut il toujours la libsdtc du 3.4.6 ?

Je suis meme pas sur qu'un emerge -eav world arrangerra quoi que ce soit ..

Il ya deux post qui traitent de cas semblables mais je n'y vois pas de solution propre, quel est votre avis ?

https://forums.gentoo.org/viewtopic-t-502550-highlight-eix+libstdc.html

https://forums.gentoo.org/viewtopic-t-461616-highlight-eix+libstdc.html

----------

## netfab

 *Quote:*   

> 
> 
> Fais voir ton emerge --info
> 
> 

 

Si le problème persiste, tu peux toujours essayer de forcer les liens symboliques pour emerger les applications concernées, mais ce n'est pas très propre.

Peux tu uploader quelque part ce fichier : /var/tmp/portage/app-portage/eix-0.8.8/temp/build.log

----------

## Ascodas

Alors une avancé notable, quand je linke de force :

```
ln -nsf /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/libstdc++.so.6 /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6
```

et bien je peux compiler eix et amarok mais je lien se casse à la fin de l'emerge, donc pour utiliser eix/amarok je dois refaire ce lien, bref ce n'est pas persistant ...

emerge --info

```
Portage 2.1.2-r8 (default-linux/amd64/2006.1, gcc-4.1.1, glibc-2.5-r0, 2.6.19-gentoo-r5 x86_64)

=================================================================

System uname: 2.6.19-gentoo-r5 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4400+

Gentoo Base System version 1.12.9

Timestamp of tree: Wed, 07 Feb 2007 20:30:08 +0000

dev-java/java-config: 1.3.7, 2.0.31-r3

dev-lang/python:     2.4.4

dev-python/pycrypto: 2.0.1-r5

sys-apps/sandbox:    1.2.18.1

sys-devel/autoconf:  2.13, 2.61

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10

sys-devel/binutils:  2.17

sys-devel/gcc-config: 1.3.14

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.20

ACCEPT_KEYWORDS="amd64 ~amd64"

AUTOCLEAN="yes"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/lib64/mozilla/defaults/pref /usr/share/X11/xkb /usr/share/config"

CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/init.d/ /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo"

CXXFLAGS="-O2 -pipe"

DISTDIR="/usr/portage/distfiles"

FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict"

GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"

LANG="fr_FR@euro"

LC_ALL="fr_FR@euro"

LINGUAS="fr fr_FR"

MAKEOPTS="-j5"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/portage /usr/portage/local/layman/xeffects /usr/local/portage"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="X a52 aac alsa amd64 apache2 bash-completion berkdb bitmap-fonts bluetooth cairo cdr cli corba cracklib crypt dba dbus dda dlloader dri dvd dvdr dvdread encode ffmpeg flac fortran gd gdbm gif glitz gpm gstreamer gtk hal i8x0 iconv imagemagick ipod ipv6 isdnlog jabber jpeg kde kipi libcaca libg++ mad matroska midi mikmod mp3 mpc mplayer msn musepack musicbrainz mysql ncurses nls nptl nptlonly nsplugin nvidia ogg opengl pam pcre pdf perl php png ppds pppd python qt qt3 readline reflection samba session sox spl srt ssl tcpd tidy tiff truetype-fonts type1-fonts udev unicode usb vorbis wxgtkl wxwindows x264 xine xorg xv xvid zlib" ALSA_CARDS="snd_intel8x0" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="mouse keyboard" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="fr fr_FR" USERLAND="GNU" VIDEO_CARDS="nvidia nv vesa"

Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS
```

Le built de eix

----------

## netfab

Si tu veux réellement trouver le problème, il va falloir remonter la chaîne.

Le linkage des binaires se fait un peu avant l'erreur (cf ton log) :

 *Quote:*   

> mv -f .deps/global.Tpo .deps/global.Po
> 
> /bin/sh ../libtool --tag=CXX   --mode=link x86_64-pc-linux-gnu-g++  -O2 -pipe   -o update-eix update-eix.o varsreader.o global.o database/libdatabase.a portage/libportage.a portage/conf/libportageconf.a portage/cache/libcache.a eixTk/libeixTk.a eixrc/libeixrc.a  
> 
> /bin/sh ../libtool --tag=CXX   --mode=link x86_64-pc-linux-gnu-g++  -O2 -pipe   -o eix eix.o varsreader.o cli.o global.o database/libdatabase.a portage/conf/libportageconf.a portage/libportage.a output/liboutput.a eixTk/libeixTk.a eixrc/libeixrc.a search/libsearch.a 
> ...

 

Que donne (uploade un fichier, sinon çà risque d'être illisible) :

```

$ grep -C 5 compiler_lib_search_path /usr/bin/libtool

```

----------

## Ascodas

Et bien tu m'apprends beaucoup merci,

le log de l'instruction précédente :

grep -C 5 compiler_lib_search_path /usr/bin/libtool 

----------

## netfab

Et ceci ?

```

# diff -Nru /usr/bin/libtool /var/tmp/portage/app-portage/eix-0.8.8/work/eix-0.8.8/libtool > /tmp/libtool.diff

```

Et uploade le fichier diff.

----------

## Ascodas

et voici :

libtool.diff

----------

## netfab

Je n'arrive pas à reproduire le problème. J'ai réinstallé gcc 3.4.6, j'ai switché de compilateur plusieurs fois (env-update, source /etc/profile, fix_libtool_files.sh X.X.X, emerge -1 libtool), et recompilé eix, vérifié les libs auxquelles il est lié, tout est ok. Vraiment étrange. Si tu fais un grep -C 5 3.4.6 /usr/bin/libtool, tu obtiens quoi ?

----------

## Ascodas

Alors ce que tu m'as demandé: 

grep -C 5 3.4.6 /usr/bin/libtool

Et puis quand je force le lien comme dis au dessus, le premier emerge fait derrière remet les choses dans l'état précédent.

EDIT : problèmes de liens symboliques ok

----------

## Ascodas

Problème résolu avec la méthode de brute :

```

emerge -aC =sys-devel/gcc-3.4*
```

par contre je suis ouvert pour comprendre le drôle de problème que j'ai rencontrer ...

----------

## Ascodas

C'est ouf ca, je reinstalle gcc-3.4.6-r2 et eix/amarok plantent à nouveau, je desinstalle gcc 3, tout rentre dans l'ordre !!?

Une idée ?

----------

## Ascodas

Encore un élément d'interrogation, suite à ces problèmes je décide de faire un emerge -eav system, et la , erreur au configure de sandbox, ne peux évaluer le compilateur, j'essaye avec la feature=-sandbox emerge sandbox, rien ne change, et la me doutant du truc, je réinstalle gcc-3.4* et la l'emerge de sandbox passe toujours avec le gcc-4.1.2 sélectionné ...

PS : toujours pas d'eix/amarok avec le gcc-3.4* d'installé ...

----------

