# C compiler cannot create executables

## Mac Fly

Guten Tag miteinander.

Ich habe ein ziemlich arges Problem. Ich wollte gcc und glibc aktualisieren, per emerge. Ich glaube bei glibc brach er dann das erste mal ab. Alle weiteren Versuche, irgendetwas neu zu mergen, schlugen fehl. Alle Compile-Vorgänge brechen mit folgender Fehlermeldung ab: "C compiler cannot create executables"

Ich hab mich dann durch Google und durch bugs.gentoo.org gewühlt, in der Hoffnung, eine Lösung für das Problem zu finden. Hab auch vieles gefunden, leider hat nichts geklappt. Hab mir sogar binäre files von gcc und glibc besorgt, ohne erfolg.

Was kann ich noch tun? Es handelt sich um einen AMD64. Hier mal ein paar Infos:

emerge --info

 *Quote:*   

> Portage 2.1.2.2 (default-linux/amd64/2006.1, gcc-3.4.6, glibc-2.5-r0, 2.6.18.5 x86_64)
> 
> =================================================================
> 
> System uname: 2.6.18.5 x86_64 unknown
> ...

 

 *Quote:*   

> rescue / # gcc-config -l
> 
>  [1] i686-pc-linux-gnu-3.4.4
> 
>  [2] i686-pc-linux-gnu-3.4.4-hardened
> ...

 

SSHD, FTPD, usw startet alles nicht mehr:

 *Quote:*   

> rescue / # /etc/init.d/sshd start
> 
>  * System environment whitelist missing!
> 
> /sbin/runscript.sh: line 76: /lib/rcscripts/sh/rc-services.sh: No such file or directory
> ...

 

Fehlen noch irgendwelchje Informationen? Mit den verschiedenen Einstellungen von gcc-config habe ich auch schon gespielt, ebenso wie mit verschiedenen Profilen.

revdep-rebuild läuft ohne Fehler durch.

Ausgabe von "ldconfig -v" Habe ich ergooglet, sollte angeblich helfen):

 *Quote:*   

> rescue / # ldconfig -v
> 
> ldconfig: Can't stat /opt/blackdown-jdk-1.4.2.03/jre/lib/amd64: No such file or directory
> 
> ldconfig: Can't stat /opt/blackdown-jdk-1.4.2.03/jre/lib/amd64/native_threads: No such file or directory
> ...

 

Eine komplette Neuinstallation möchte ich aus verschiedenen Gründen ungern ausführen. Hat irgendjemand n Tip von euch?

----------

## Klaus Meier

Sieht nach einer missglückten Umstellung auf den gcc 4 aus. Lies dir das mal durch.

http://www.gentoo.org/doc/en/gcc-upgrading.xml

Mir fällt auf, dass dein aktiver gcc noch der 3.4.6 ist. Solltest schon mit gcc-config auf den neuen umstellen. Das geht nicht von alleine.

----------

## Wolle

 *Mac Fly wrote:*   

> Ich habe ein ziemlich arges Problem. Ich wollte gcc und glibc aktualisieren, per emerge. Ich glaube bei glibc brach er dann das erste mal ab. Alle weiteren Versuche, irgendetwas neu zu mergen, schlugen fehl. Alle Compile-Vorgänge brechen mit folgender Fehlermeldung ab: "C compiler cannot create executables"

 

Ich hatte das neulich beim Upgrade von gcc-3.4.x auf 4.1.x auf einer ARM (mit uclibc) auch. Ein Umschalten auf den alten Compiler brachte nichts. gcc helloworld.c: "C compiler cannot create executables".

 *Mac Fly wrote:*   

> Eine komplette Neuinstallation möchte ich aus verschiedenen Gründen ungern ausführen. Hat irgendjemand n Tip von euch?

 

Eine Neuinstallation war nicht nötig, "Restore Backup" hat ausgereicht.   :Twisted Evil: 

----------

## Mac Fly

Vielen Dank.

Dass gcc-config falsch eingestellt war, lag an meinen Versuchen. leider ist da wohl irgendwas schiefgegangen.

 *Quote:*   

> rescue / # gcc-config 11
> 
>  * Switching native-compiler to x86_64-pc-linux-gnu-4.1.1 ...
> 
> >>> Regenerating /etc/ld.so.cache...                                      [ ok ]
> ...

 

Dieser emerge schlägt auch fehl, mit derselben Fehlermeldung.

 *Quote:*   

> >>> Compiling source in /var/tmp/portage/sys-devel/libtool-1.5.22/work/libtool-1.5.22 ...
> 
>  * econf: updating libtool-1.5.22/config.guess with /usr/share/gnuconfig/config.guess
> 
>  * econf: updating libtool-1.5.22/config.sub with /usr/share/gnuconfig/config.sub
> ...

 

Was für Möglichkeiten habe ich noch?

----------

## Mac Fly

Ups, ich hab die config.log vergessen.

 *Quote:*   

> This file contains any messages produced by compilers while
> 
> running configure, to aid debugging if configure makes a mistake.
> 
> It was created by libtool configure 1.5.22, which was
> ...

 

----------

## achimh

 *Wolle wrote:*   

>  *Mac Fly wrote:*   Ich habe ein ziemlich arges Problem. Ich wollte gcc und glibc aktualisieren, per emerge. Ich glaube bei glibc brach er dann das erste mal ab. Alle weiteren Versuche, irgendetwas neu zu mergen, schlugen fehl. Alle Compile-Vorgänge brechen mit folgender Fehlermeldung ab: "C compiler cannot create executables" 
> 
> Ich hatte das neulich beim Upgrade von gcc-3.4.x auf 4.1.x auf einer ARM (mit uclibc) auch. Ein Umschalten auf den alten Compiler brachte nichts. gcc helloworld.c: "C compiler cannot create executables".
> 
>  *Mac Fly wrote:*   Eine komplette Neuinstallation möchte ich aus verschiedenen Gründen ungern ausführen. Hat irgendjemand n Tip von euch? 
> ...

 

Hallo Wolle!

Meinst du ein Stage4?

Generell Mac Fly, hatte ich auch genau dasselbe Problem, hab 2 Tage herumprobiert, bin aber auf keinen wirklichen grünen Zweig gekommen. Bei mir dürfte irgendwas beim Update der Toolchain in die Hose gegangen sein. Ich habe eine Neuinstallation gemacht.

Das Problem fing auch bei mir bei einem Abbruch beim Glibc installieren an.

----------

## Wolle

 *achimh wrote:*   

> Meinst du ein Stage4?

 

Als Stage4 würde ich ein System bezeichnen, dass noch keine individuellen Einstellungen hat. Als Backup bezeichne ich etwas, das das System beim zurückspielen in den Zustand versetzt, den es zum Zeitpunkt der Erstellung hatte. Aber vielleicht benutze ich die Begriffe einfach nur anders.

Ich mache meine Backups immer mit tar aus einem anderen System heraus (Knoppix oder Live-CD oder was auch immer). Mountpunkte anlegen, Partitionen mounten und dann sowas wie:

```
tar -czf - --exclude lost+found <mountpoint system> | split -b 2000m - <mountpoint backup>/backup<datum>.tgz.x
```

Den Split mache ich wenn's denn droht größer als 2 GiB zu werden damit ich das schmerzfrei auf DVDs brennen kann.

----------

## achimh

Also soweit ich mir das Skript zum Generieren eines Stage4 Archivs angesehen habe, macht das grundsätzlich auch nichts anderes als dein tar Befehl, nur geht es viel mehr in die Tiefe was Directories oder Files die zu inkludieren bzw. auszulassen sind betrifft.

Wenn du ein stage4 Archiv generierst hast du auch den alten Zustand wieder, den du beim Erzeugen hattest (natürlich sind da alle deine Einstellungen dabei).

Auf alle Fälle werde ich in Zukunft mehr Wert auf ein Backup legen, vor allem wenn es gilt wichtige Pakete wie glibc, gcc, binutils, linux-headers upzudaten, weil das ist mir jetzt schon 2 mal passiert, dass ich mir bei einem Update das System zerschiesse, wenn ich ohne Bedacht ein emerge -avNDu world mache. Werde ab jetzt spezielles Augenmerk auf die Toolchain legen und werden die entsprechenden 4 Pakete (linux-headers, glibc, gcc und binutils) bevor einem emerge world seperat in der richtigen Reihenfolge updaten.

----------

## Mac Fly

Ok, ich installiere neu. Vielen Dank trotzdem.

----------

## achimh

 *Mac Fly wrote:*   

> Ok, ich installiere neu. Vielen Dank trotzdem.

 

Falls keiner eine andere Möglichkeit sieht?

Ich habe nur neuinstalliert, weil ich keinen anderen Ausweg gesehen habe, und ich so rasch als möglich wieder ein funktionierendes System haben wollte, betraf schliess auch meinen Firmenlaptop.

----------

## firefly

 *Mac Fly wrote:*   

> Ok, ich installiere neu. Vielen Dank trotzdem.

 

du könntest entweder per live-/install-cd nen stage3 archiv drüberbügeln  und dann ein emerge -e world.

oder du nimmst das gcc-rescue tar-archiv, welches von einem gentoo-dev angeboten wird:

http://dev.gentoo.org/~avenj/bins/i686/

EDIT: siehe auch https://forums.gentoo.org/viewtopic.php?t=225645&highlight=recover+gcc

----------

## Mac Fly

Sodele.

Hab mir n aktuelles Stage3 besorgt und nach / entpackt. Jetzt emerge ich gerade den gcc neu. macht er auch schon ne ganze Weile.

Sollte ich, bevor ich "emerge -e world" ausführe, nicht einzelne Pakete zuerst neu mergen? gib? glibc? libtool?

Oder zuerst ein "emerge -e system"?

Irgendwelche Tips, Ratschläge?

Ich will halt diesmal sicher sein, bin froh, dass ich schon so weit bin  :Smile: 

----------

## nikaya

 *Mac Fly wrote:*   

> Sodele.
> 
> Hab mir n aktuelles Stage3 besorgt und nach / entpackt. Jetzt emerge ich gerade den gcc neu. macht er auch schon ne ganze Weile.
> 
> Sollte ich, bevor ich "emerge -e world" ausführe, nicht einzelne Pakete zuerst neu mergen? gib? glibc? libtool?
> ...

 

http://www.gentoo.org/doc/en/gcc-upgrading.xml

----------

## Mac Fly

OK, dann geh ich mal danach vor. Vielen Dank schonmal an alle, ich geb Rückmeldung, ob ich erfolgreich war  :Smile: 

----------

## Mac Fly

Leider brach der gcc grade ab. Hab wohl wieder vergessen, gcc-config umzustellen. Also nochmal das Stagefile entpackt und dann  *Quote:*   

> rescue / # gcc-config -l
> 
>  [1] i686-pc-linux-gnu-3.4.4
> 
>  [2] i686-pc-linux-gnu-3.4.4-hardened
> ...

 

Danach spuckt so ziemlich jeder Befehl dasselbe aus.

Wenn ich nach dem entpacken gcc-config nicht ändere, dann kommt folgender Fehler:

 *Quote:*   

> Adding multilib support to Makefile in /var/tmp/portage/gcc-4.1.1-r3/work/gcc-4.1.1/libstdc++-v3
> 
> multidirs=32
> 
> with_multisubdir=
> ...

 

Kann dies evtl an den useflags liegen?

 *Quote:*   

> Calculating dependencies ...done!
> 
> [ebuild   R   ] sys-devel/gcc-4.1.1-r3  (-altivec) -bootstrap -build -doc +fortran -gcj +gtk* -hardened -ip28 -ip32r10k -mudflap (-multilib) -multislot (-n32) (-n64) +nls -nocxx -objc -objc++ -objc-gc -test -vanilla 0 kB
> 
> 

 

----------

## firefly

hast du ein 64bit oder 32bit system installiert?

----------

## Mac Fly

Es ist ein AMD64 und installiert habe ich auch ein 64Bit-System

----------

## Mac Fly

Ich hab vergessen, die make.conf anzupassen. Brachte leider aber auch nichts  :Sad: 

 *Quote:*   

> config.status: creating config.h
> 
> config.status: executing default-1 commands
> 
> Adding multilib support to Makefile in /var/tmp/portage/gcc-4.1.1-r3/work/gcc-4.1.1/libstdc++-v3
> ...

 

----------

## nikaya

 *Quote:*   

> Ich hab vergessen, die make.conf anzupassen. Brachte leider aber auch nichts

 

Was heißt das?Doch wohl nicht die CHOST-Variable?

----------

## Mac Fly

Ich habe ja eine Kopie von /etc, da habe ich die make.conf rüberkopiert:

 *Quote:*   

> CFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer"
> 
> CHOST="x86_64-pc-linux-gnu"
> 
> CXXFLAGS="${CFLAGS}"
> ...

 

Schade, die binären Files von dem gentoo-dev bieten leider keinen gcc für amd64  :Sad: 

----------

## roock

also ich bin mir nicht ganz sicher, aber fuer mich klingt das stark danach, als ob es da irgendwo ein problem mit 32/64 gibt. war dein system schon immer ein 64bit-system? weil die ausgabe von gcc-config sieht irgendwie komisch aus (ich hatte noch nie ein 64bit-system laufen, kann das daher net ganz beurteilen). jedenfalls wuerd ich nochmal ueberpruefen, ob du auch wirklich ein 64-bit-system gebootet hast (z.b. mit einer live-cd), dann nochmal auch wirklich ein 64bit stage3 drueberentpacken und danach auch wirklich kontrollieren, ob der richtige compiler ausgeählt ist.

hth

roock

----------

## Mac Fly

Also das System war schon immer auf 64Bit, die "komischen" gcc-Versionen stammen von meinem verzweifelten Versuch etwas zu retten, und da es wie oben gesagt keine binaries für einen amd64-gcc gab, nahm ich nen anderen in der Hoffnung dass dies funktioniert  :Sad: 

Ich habe leider keinen physischen Zugriff auf den Server, ich habe mit dem Rescue-System von Hetzner in meinen Server ge"chroot"et. Und dieses Rescue-System ist ein 64Bit System.

Das File, das ich drüberentpackt hab, ist stage3-amd64-2006.0.tar.bz2, ich denke, dass dies das richtige ist.

Komischerweise, wenn ich stage3-amd64-2006.1.tar.bz2 entpacke, kommt folgendes:

 *Quote:*   

> rescue:/mnt/hda3# chroot /mnt/hda3/ /bin/bash
> 
> /bin/bash: relocation error: /lib64/tls/libc.so.6: symbol _dl_out_of_memory, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference

 

----------

## Mac Fly

Habs aufgegeben. Hab soeben ein neues System aufgesetzt. Schade, aber was solls.

Trotzdem vielen Dank.

----------

