# C++ compiler not found

## corpy

Dunque, l'altra sera ho avuto la malsana ideadi lanciare un emerge -uDN world su un vecchio pc che sta nel sottoscala dopo aver dato una rapida occhiata a quel che c'era da aggiornare.

La mattina me lo son trovato piantato sull'aggiornamento di un pacchetto con la scusa che non trova un compilatore per il c++.

Effettivamente invocando il g++ mi dice che non sa di cosa io stia parlando. Il gcc quantomeno fa ancora il suo dovere.

Dall'emerge.log ho visto che ha fatto, in ordine l'update del gcc-config, del gcc, glibc, libstdc++, e poi la morte.

Io non so piu dove sbattere la testa. Qualcuno ha qualche idea sul perche/percome non mi trova piu l'eseguibile del g++?

La use nocxx è disabilitata, non saprei che altro potrebbe essere...

accetto volentieri ogni consiglio, grazie

----------

## darkmanPPT

prova un 

leggi la guida per il passaggio ad un nuovo gcc 

poi prova

revdep-rebuild (se non lo hai installalo)

poi prova

poi prova a far ripartire l'emerge -uDN world

e se poi nn va.... mah!

facci sapere... ma credo che andrà!  :Wink: 

.....

o almeno lo spero   :Laughing: 

----------

## corpy

Grazie dei consigli ma purtroppo nulla. 

Il passaggio del gcc lha fatto dal 4.1.1 al 4.1.2, che dovrebbe essere abbastanza indolore.

Anche provando a ricompilare il gcc non ottengo nessun risultato, e sia revdep-rebuild sia emerge -e world falliscono miseramente perche cercano di compilare prima qualche pacchetto per il quale il g++ è richiesto.

Ora sto provando a downgradare il gcc alla vecchia versione, vediamo che succede.    :Confused: 

La cosa è comunque un po' bizzarra non riesco a capire il motivo di tutto ciò e il mio orgoglio ne sta uscendo distrutto    :Sad: 

Qualche altra idea?

----------

## crisandbea

 *corpy wrote:*   

> Grazie dei consigli ma purtroppo nulla. 
> 
> Il passaggio del gcc lha fatto dal 4.1.1 al 4.1.2, che dovrebbe essere abbastanza indolore.
> 
> Anche provando a ricompilare il gcc non ottengo nessun risultato, e sia revdep-rebuild sia emerge -e world falliscono miseramente perche cercano di compilare prima qualche pacchetto per il quale il g++ è richiesto.
> ...

 

riesci a postare l'errore su cui si ferma la compilazione????

ciauz

----------

## corpy

l'errore che ottengo è piu o meno sempre questo:

```

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ANSI C... none needed

checking how to run the C preprocessor... gcc -E

checking build system compiler gcc... yes

checking for build system preprocessor... gcc -E

checking for build system executable suffix... 

checking whether build system compiler is ANSI... yes

checking for build system compiler math library... -lm

checking for i686-pc-linux-gnu-g++... no

checking for i686-pc-linux-gnu-c++... no

checking for i686-pc-linux-gnu-gpp... no

checking for i686-pc-linux-gnu-aCC... no

checking for i686-pc-linux-gnu-CC... no

checking for i686-pc-linux-gnu-cxx... no

checking for i686-pc-linux-gnu-cc++... no

checking for i686-pc-linux-gnu-cl... no

checking for i686-pc-linux-gnu-FCC... no

checking for i686-pc-linux-gnu-KCC... no

checking for i686-pc-linux-gnu-RCC... no

checking for i686-pc-linux-gnu-xlC_r... no

checking for i686-pc-linux-gnu-xlC... no

checking for g++... no

checking for c++... no

checking for gpp... no

checking for aCC... no

checking for CC... no

checking for cxx... no

checking for cc++... no

checking for cl... no

checking for FCC... no

checking for KCC... no

checking for RCC... no

checking for xlC_r... no

checking for xlC... no

checking whether we are using the GNU C++ compiler... no

checking whether g++ accepts -g... no

checking C++ compiler g++  -O3 -march=athlon-tbird -pipe -fomit-frame-pointer... no

configure: error: C++ compiler not available, see config.log for details

!!! Please attach the following file when filing a report to bugs.gentoo.org:

!!! /var/tmp/portage/dev-libs/gmp-4.2.1-r1/work/gmp-4.2.1/config.log

!!! ERROR: dev-libs/gmp-4.2.1-r1 failed.

Call stack:

  ebuild.sh, line 1614:   Called dyn_compile

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

  ebuild.sh, line 44:   Called src_compile

  gmp-4.2.1-r1.ebuild, line 54:   Called econf '--localstatedir=/var/state/gmp' '--disable-mpfr' '--disable-mpbsd' '--enable-cxx'

  ebuild.sh, line 577:   Called die

!!! econf 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/dev-libs/gmp-4.2.1-r1/temp/build.log'.

```

semplicemente gli manca il g++, non esistono nemmeno i binari dove dovrebero essere...

se può essere utile:

```

emerge --info                             

Portage 2.1.2.3 (default-linux/x86/2006.1, gcc-4.1.1, glibc-2.5-r1, 2.6.18-gentoo-r3 i686)

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

System uname: 2.6.18-gentoo-r3 i686 AMD Athlon(tm) processor

Gentoo Base System release 1.12.10

Timestamp of tree: Thu, 12 Apr 2007 06:50:01 +0000

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

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.16

sys-devel/libtool:   1.5.23b

virtual/os-headers:  2.6.20-r2

ACCEPT_KEYWORDS="x86 ~x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O3 -march=athlon-tbird -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/X11/xkb"

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

CXXFLAGS="-O3 -march=athlon-tbird -pipe -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="ccache distlocks metadata-transfer parallel-fetch sandbox sfperms strict"

GENTOO_MIRRORS="http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ http://www.die.unipd.it/pub/Linux/distributions/gentoo-sources/ "

LINGUAS="it"

MAKEOPTS="-j2"

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 --filter=H_**/files/digest-*"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

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

USE="3dnow X a52 aac acl acpi aiglx alsa amuled apache2 apm asf avahi beagle berkdb bitmap-fonts bittorrent browserplugin build cairo cddb cdr cli cracklib crypt cups daap dbus dri dvd dvdr dvi effects esd firefox flac fortran ftp gcc64 gdbm glitz gnome gnutls gpm gtk gtk2 hal howl iconv ieee1394 imap ipv6 isdnlog java jikes jpeg2k kdeenablefinal kdehiddenvisibility kerberos ldap libg++ libnotify logitech-mouse mad matroska midi mmx mono mozilla mp3 musepack musicbrainz mysql nas ncurses nls nptl nptlonly nsplugin ogg oss pam pcre pdf perl php pic png ppds pppd python readline reflection remote rtc samba server session spl sse ssl svg tagwriting tcpd theora threads toolbar truetype truetype-fonts type1-fonts unicode userlocales v4l visualization vorbis win32codecs wmf x86 xchat xine xml xorg xscreensaver xvid xvmc zip zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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="keyboard mouse" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="it" USERLAND="GNU" VIDEO_CARDS="via vesa fbdev"

Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY

```

Anche il downgrade al precendente compilatore non ha sortito alcun effetto.

Non penso sia una grande idea installare il g++ bypassando il portage vero?

----------

## Scen

```

gcc-config -l

```

cosa dice?

Dovrebbe darti un output del tipo

```

 [1] i686-pc-linux-gnu-4.1.1 *

```

Tu dai

```

gcc-config 1

```

(al posto di 1 metti il numero del gcc che vuoi usare, nel caso abbia più versioni installate)

seguito da

```

env-update && source /etc/profile

```

----------

## djinnZ

non è che hai ancora /usr/i386-pc-linux-gnu e compagnia in giro? Alle volte crea problemi.

Se è uno stage vecchio devi riemergere manualmente libtool dopo il cambio di compilatore, non hai fix_libtool_files credo.

emerge -DNupv gcc glibc libstdc++  cosa riporta?

----------

## corpy

Il profilo selezionato dal gcc-config è corretto, mentre "emerge -DNupv gcc glibc libstdc++" mi dice che è tutto perfettamente aggiornato.

Effettivamente in /usr/i386-pc-linux-gnu c'è qualcosa:

```

thunderbird corpy # ls /usr/i386-pc-linux-gnu/

i686-pc-linux-gnu

thunderbird corpy # ls -a /usr/i386-pc-linux-gnu/

.  ..  i686-pc-linux-gnu

thunderbird corpy # ls -a /usr/i386-pc-linux-gnu/i686-pc-linux-gnu/

.  ..  lib

thunderbird corpy # ls -a /usr/i386-pc-linux-gnu/i686-pc-linux-gnu/lib/

.                 libbfd.a   libiberty.a           libopcodes.la

..                libbfd.la  libopcodes-2.16.1.so  libopcodes.so

libbfd-2.16.1.so  libbfd.so  libopcodes.a

```

Anche se non credo, è possibile che dipenda da questa roba?

Esiste qualche spiegazione razionale al fatto che il gcc si installi senza supporto al c++?

----------

## djinnZ

 *corpy wrote:*   

> Anche se non credo, è possibile che dipenda da questa roba?

 

Avere i386... crea qualche piccolo problema di percorsi e di sicuro ldconfig si incasina che è una bellezza (anche se non mi sono mai curato di indagare il perchè) per non dire dell'automake di gcc (mica hai multitarget attiva?).

Prova a spostare i386... e verificare che non ci siano link ad essa, poi lancia un

```
emerge -1D ldconfig gcc
```

 fatto questo riseleziona il compilatore e riemergi libstdc++ glib etc. In teoria dovresti risolvere (a me ha funzionato). Casomai prova a creare i pacchetti binari e poi ad installarli.

L'unica altra cosa è un nocxx nel profilo o da qualche parte ma dovresti vederlo.

Mi pare di ricordare che una volta c'era una variabile ambiente che era in grado di bloccare la costruzione del compilatore c++, prova a dare uno sguardo con un 

```
set | less
```

 se hai qualcosa di strano definito.

----------

