# Fehler gemacht beim CHOST ändern :(

## Deli

Hi!

Ich habe eine neue CPU in meiner Gentoo Maschine und demnach die make.conf abgeändert. Danach habe ich direkt world mit emptytree emerged ohne vorher gcc manuell neu zu machen!

Jetzt hab ich das Problem, dass es kein Vor und Zurück mehr gibt, da ich nichts mehr compilen kann.

Meine alte CPU war ein Opteron und meine make.conf sah demnach so aus:

```
CHOST="i686-pc-linux-gnu"

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

CXXFLAGS="${CFLAGS}"
```

Jetzt mit dem Athlon X2 64 sieht das ganze so aus:

```
CHOST="x86_64-pc-linux-gnu"

CFLAGS="-march=athlon64 -O2 -pipe -msse3"

CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j3"
```

Wenn ich nun meinetwegen portage installieren will, kommt folgende meldung:

```
*blablabla*

>>> Source unpacked.

>>> Compiling source in /var/tmp/portage/sys-apps/portage-2.1.4.4/work/portage-2.1.4 ...

{standard input}: Assembler messages:

{standard input}:7: Error: suffix or operands invalid for `push'

{standard input}:9: Error: suffix or operands invalid for `push'

{standard input}:10: Error: suffix or operands invalid for `push'

{standard input}:11: Error: suffix or operands invalid for `push'

{standard input}:33: Error: suffix or operands invalid for `pop'

{standard input}:34: Error: suffix or operands invalid for `pop'

{standard input}:35: Error: suffix or operands invalid for `pop'

{standard input}:43: Error: suffix or operands invalid for `push'

{standard input}:45: Error: suffix or operands invalid for `push'

{standard input}:46: Error: suffix or operands invalid for `push'

{standard input}:47: Error: suffix or operands invalid for `push'

{standard input}:86: Error: suffix or operands invalid for `pop'

{standard input}:87: Error: suffix or operands invalid for `pop'

{standard input}:88: Error: suffix or operands invalid for `pop'

{standard input}:96: Error: suffix or operands invalid for `push'

{standard input}:145: Error: suffix or operands invalid for `push'

{standard input}:146: Error: suffix or operands invalid for `push'

 *

 * ERROR: sys-apps/portage-2.1.4.4 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_compile

 *             environment, line 2389:  Called die

 * The specific snippet of code:

 *       $(tc-getCC) ${CFLAGS} ${LDFLAGS} -o tbz2tool tbz2tool.c || die "Failed to build tbz2tool";

 *  The die message:

 *   Failed to build tbz2tool

 
```

bei gcc sieht es so aus:

```
checking whether the C compiler (gcc -march=athlon64 -O2 -pipe ) works... no

configure: error: installation or configuration problem: C compiler cannot create executables.

 *

 * ERROR: sys-devel/gcc-4.1.2 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_compile

 *             environment, line 4536:  Called toolchain_src_compile

 *             environment, line 5007:  Called gcc_src_compile

 *             environment, line 2888:  Called gcc_do_configure

 *             environment, line 2654:  Called die

 * The specific snippet of code:

 *       "${S}"/configure "$@" || die "failed to run configure";

 *  The die message:

 *   failed to run configure
```

Hier noch ein paar ausgewählte Ausgaben, die bei der Lösung vielleicht helfen könnten:

```
~ # gcc-config -l

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

~ # binutils-config -l

 [1] x86_64-pc-linux-gnu-2.18 *

~ # cat /etc/env.d/05gcc-x86_64-pc-linux-gnu

PATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.2"

ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.2"

~ # cat /etc/env.d/gcc/i686-pc-linux-gnu-4.1.2

LDPATH="/usr/lib/gcc/i686-pc-linux-gnu/4.1.2"

MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man"

INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info"

STDCXX_INCDIR="g++-v4"

GCC_PATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.2"

~ # cat /etc/env.d/gcc/config-x86_64-pc-linux-gnu

CURRENT=i686-pc-linux-gnu-4.1.2
```

Ich hoffe, mein System lässt sich noch mit eurer Hilfe retten  :Sad: 

Für alle konstruktiven Anregungen danke ich bereits im Vorraus  :Smile: 

----------

## Finswimmer

Lad dir die richtige Stage3 runter, baue dort den GCC in der gleichen Version neu. Packe ihn mit quickpkg und entpacke ihn dann in deinem normalem System.

Tobi

----------

## Deli

Vielen Dank für deine schnelle Antwort!

War den ganzen Tag damit beschäftigt, genau das zu tun (dabei haben sich mir mehrere Fehler und Probleme in den Weg gelegt, weshalb es tatsächlich bis jetzt gedauert hat, dass ich mich bedanke  :Very Happy: )

Aber so ganz funktioniert hat es leider nicht  :Sad: 

Wenn ich

```
emerge -k gcc
```

mache, kommt folgende Meldung:

```
>>> Regenerating /etc/ld.so.cache...

>>> Original instance of package unmerged safely.

 * Switching native-compiler to x86_64-pc-linux-gnu-4.1.2 ...

 * Your gcc has a bug with GCC_SPECS.

 * Please re-emerge gcc.

 * http://bugs.gentoo.org/68395

/usr/bin/gcc-config: line 150: ///usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2/gcc: cannot execute binary file                                                   [ ok ]

 * If you have issues with packages unable to locate libstdc++.la,

 * then try running 'fix_libtool_files.sh' on the old gcc versions.
```

```
~ # fix_libtool_files.sh 4.1.2

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

gcc-config error: Could not run/locate "gcc"

:0: assertion failed: (gcc -dumpversion) | getline NEWVER)
```

Das " * Please re-emerge gcc." habe ich bereits 2mal befolgt. Sowohl das Paket zu emergen als auch das Paket neu zu erstellen auf dem temporären stage3-system. Immer der gleiche Fehler  :Sad: 

Hoffentlich weiß jemand rat :>

Nochmals vielen Dank

Deli

----------

## STiGMaTa_ch

 *Deli wrote:*   

> Vielen Dank für deine schnelle Antwort!
> 
>  * Switching native-compiler to x86_64-pc-linux-gnu-4.1.2 ...
> 
> [...]
> ...

 

Geht's denn wenn du auf dem temporären System einen gcc mit den alten Flags machst?

```
CHOST="i686-pc-linux-gnu"

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

CXXFLAGS="${CFLAGS}"
```

Lieber Gruss

STiGMaTa

----------

## Mr_Maniac

Ähm... Hast du auch schon einen 64Bit-Kernel?

Und... Geht das überhaupt "so leicht", von i686 zu x86_64 zu migrieren?

Ich habe im Mai (2007) ja auch von meinem alten Athlon Thunderbird auf einen Core2Duo gewechselt und damit auch gleich den Sprung auf 64Bit gemacht.

Jedoch habe ich mein Gentoo "damals" ganz neu aufgesetzt und nur die Configs, sowie mein Home-Verzeichnis behalten...

Nun ja... Wie gesagt: Hast du schon einen 64Bit-Kernel? Denn ohne diesen wird es wohl kaum was... Du könntest natürlich auch von einer 64Bit-LiveCD booten und in dein System chrooten...

----------

## Deli

Hi!

@STiGMaTa_ch:

Gute Idee, aber leider:

```
{standard input}: Assembler messages:

{standard input}:33: Error: suffix or operands invalid for `push'

{standard input}:43: Error: suffix or operands invalid for `call'

{standard input}:61: Error: suffix or operands invalid for `push'

{standard input}:71: Error: suffix or operands invalid for `call'

make[2]: *** [crtbegin.o] Error 1

make[2]: Leaving directory `/var/tmp/portage/sys-devel/gcc-4.1.2/work/build/gcc'

make[1]: *** [stage1_build] Error 2

make[1]: Leaving directory `/var/tmp/portage/sys-devel/gcc-4.1.2/work/build/gcc'

make: *** [profiledbootstrap] Error 2

 *

 * ERROR: sys-devel/gcc-4.1.2 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_compile

 *             environment, line 4592:  Called toolchain_src_compile

 *             environment, line 5063:  Called gcc_src_compile

 *             environment, line 2918:  Called gcc_do_make

 *             environment, line 2748:  Called die

 * The specific snippet of code:

 *       emake LDFLAGS="${LDFLAGS}" STAGE1_CFLAGS="${STAGE1_CFLAGS}" LIBPATH="${                                                                                                                      LIBPATH}" BOOT_CFLAGS="${BOOT_CFLAGS}" ${GCC_MAKE_TARGET} || die "emake failed w                                                                                                                      ith ${GCC_MAKE_TARGET}";

 *  The die message:

 *   emake failed with profiledbootstrap
```

@Mr_Maniac:

Auf dem System hatte ich keinen 64-Bit kernel. Aber nach der Anleitung von Finswimmer habe ich dann mit der amd64 minimal installations cd ein temporäres System aufgesetzt, gechrootet und da gcc compiliert.

```
/ # uname -a

Linux livecd 2.6.19-gentoo-r5 #1 SMP Fri Mar 23 22:03:13 UTC 2007 x86_64 AMD Athlon(tm) X2 Dual Core Processor BE-2400 AuthenticAMD GNU/Linux
```

Mit dem x86 CHOST, kommt die Meldung mit dem Bug (siehe oben) und als i686 kann ichs gar nicht erst compilieren (siehe oben in diesem Post).

Schade, das klang so vielversprechend  :Sad: 

Bin echt am Verzweifeln...

----------

## zworK

Vielleicht schon zu spät, aber fürs Ändern der CHOST Variable gibts ein Howto, eben weils kritisch ist:

http://www.gentoo.org/doc/en/change-chost.xml

Ich frage mich ebenfalls, oder bezweifle schon fast, dass der Sprung von x86 auf x86_64 so problemlos funktioniert.

----------

## Deli

Hi zworK!

Ja, das howto kenn ich, hab ich aber leider nicht beachtet   :Cool: 

Ist mir leider erst eingefallen, als es schon zu spät war.

Schaut im moment danach aus, dass ich mein gentoo neu aufsetzen werde.

Damit warte ich aber bis morgen, weil ich a) heute wenig zeit hab und b) ja vllt doch noch jemandem was einfällt ;D

Falls nicht, danke ich euch allen für eure Unterstüzung und die Mühe die ihr euch gegeben habt.

----------

