# [Cross] Impossible de générer la chaine avec crossdev

## gbetous

Bonjour,

J'essaie de générer une chaîne complète de compilation pour le RaspberryPi, et je suis simplement le wiki Gentoo.

La génération s'arrête assez rapidement, avec l'erreur suivante :

```
make[2] : on quitte le répertoire « /var/tmp/portage/cross-armv6j-hardfloat-linux-gnueabi/gcc-4.4.3/work/build/gcc »

Checking multilib configuration for libgcc...

mkdir -p -- armv6j-hardfloat-linux-gnueabi/libgcc

Configuring in armv6j-hardfloat-linux-gnueabi/libgcc

configure: creating cache ./config.cache

checking for --enable-version-specific-runtime-libs... no

checking for a BSD-compatible install... /usr/bin/install -c

checking for gawk... gawk

checking build system type... x86_64-pc-linux-gnu

checking host system type... armv6j-hardfloat-linux-gnueabi

checking for armv6j-hardfloat-linux-gnueabi-ar... /usr/libexec/gcc/armv6j-hardfloat-linux-gnueabi/ar

checking for armv6j-hardfloat-linux-gnueabi-lipo... armv6j-hardfloat-linux-gnueabi-lipo

checking for armv6j-hardfloat-linux-gnueabi-nm... /var/tmp/portage/cross-armv6j-hardfloat-linux-gnueabi/gcc-4.4.3/work/build/./gcc/nm

checking for armv6j-hardfloat-linux-gnueabi-ranlib... /usr/libexec/gcc/armv6j-hardfloat-linux-gnueabi/ranlib

checking for armv6j-hardfloat-linux-gnueabi-strip... /usr/libexec/gcc/armv6j-hardfloat-linux-gnueabi/strip

checking whether ln -s works... yes

checking for armv6j-hardfloat-linux-gnueabi-gcc... /var/tmp/portage/cross-armv6j-hardfloat-linux-gnueabi/gcc-4.4.3/work/build/./gcc/xgcc -B/var/tmp/portage/cross-armv6j-hardfloat-linux-gnueabi/gcc-4.4.3/work/build/./gcc/ -B/usr/armv6j-hardfloat-linux-gnueabi/bin/ -B/usr/armv6j-hardfloat-linux-gnueabi/lib/ -isystem /usr/armv6j-hardfloat-linux-gnueabi/include -isystem /usr/armv6j-hardfloat-linux-gnueabi/sys-include

checking for suffix of object files... configure: error: in `/var/tmp/portage/cross-armv6j-hardfloat-linux-gnueabi/gcc-4.4.3/work/build/armv6j-hardfloat-linux-gnueabi/libgcc':

configure: error: cannot compute suffix of object files: cannot compile

See `config.log' for more details.

make[1]: *** [configure-target-libgcc] Erreur 1

make[1] : on quitte le répertoire « /var/tmp/portage/cross-armv6j-hardfloat-linux-gnueabi/gcc-4.4.3/work/build »

make: *** [all] Erreur 2

emake failed

```

Au passage, j'ai essayé avec une autre cible (powerpc) et j'ai la même erreur au même endroit.

Une idée ? Merci !   :Cool: 

----------

## xaviermiller

Désactive fortran (USE="-fortran"), et prends une version plus récente de GCC. J'ai la version 4.7 sans souci, et la 4.5 est passée comme une rose.

----------

## kwenspc

Faut utiliser une bonne combinaison de versions gcc/glibc/binutils

Y a une matrice de compat ici   :Arrow:  http://kegel.com/crosstool/crosstool-0.43/buildlogs/

Mais apparement plus mise à jour   :Sad: 

Faut chercher sur les forums lié à rasberry pi sinon. Ou bien XavierMiller, c'est quoi ta combinaison de versions?

----------

## xaviermiller

Hello,

La config du stage3 officiel est OK (gcc-4.5, glibc-2.15 (?), binutils-2.20), et je suis en "latest hardmasked", c'est-à-dire binutils-2.22, glibc-2.16 et gcc-4.7 sur toutes mes machines (amd64, atom, armv6j et armv7l).

Je ne pense pas que la version de gbetous soit utilisable : trop vieille.

Il faut aussi la dernière version de crossdev, qui supporte bien hardfp.

----------

## gbetous

Je vais voir mes versions, mais je suis arrivé à trouver qqchose qui compile bien en suivant ce wiki.

```
crossdev -S -v -t arm-unknown-linux-gnueabi
```

----------

## xaviermiller

Je me répète : il te faut une version récente de crossdev et de la toolchain.

Et le host que tu mentionnes n'est pas assez précise.

Il te faut sys-devel/crossdev-20120531

Et le target doit être "armv6j-hardfloat-linux-gnueabi"

Chez moi, j'ai

- cross-armv6j-hardfloat-linux-gnueabi/binutils-2.22-r1

- cross-armv6j-hardfloat-linux-gnueabi/gcc-4.7.1

- cross-armv6j-hardfloat-linux-gnueabi/glibc-2.16.0

- cross-armv6j-hardfloat-linux-gnueabi/linux-headers-3.4-r1

----------

## gbetous

Bizarre, j'ai bien mon crossdev à jour :

```

guillaume@coyote ~ $ eix -s crossdev

[I] sys-devel/crossdev

     Available versions:  20100814 20101011 20110310 20110705 20110819 (~)20111011 20111018 20111118 20111221 (~)20120214 (~)20120227 (~)20120228 (~)20120229 (~)20120301 20120305 (~)20120529 (~)20120531 **99999999

     Installed versions:  20120531(22:40:30 19/07/2012)

     Homepage:            http://www.gentoo.org/

     Description:         Gentoo Cross-toolchain generator

```

Je ne comprends pas pourquoi crossdev s'entête à me construire des versions aussi vieilles (gcc 4.4.3 et glibc-2.14.1-r3) . Sur ma machine, en natif, gcc-4.5.3, mais la même version de glibc.

Je rentente donc la target "armv6j-hardfloat-linux-gnueabi"

Je génère sans l'option "-S", j'ai mis "-fortran" dans mon make.conf et les packages en keyword et en unmask :

```
coyote portage # cat /etc/portage/package.keywords/cross-armv6j-hardfloat-linux-gnueabi 

cross-armv6j-hardfloat-linux-gnueabi/binutils arm ~arm -amd64 -~amd64

cross-armv6j-hardfloat-linux-gnueabi/gcc arm ~arm -amd64 -~amd64

cross-armv6j-hardfloat-linux-gnueabi/linux-headers arm ~arm -amd64 -~amd64

cross-armv6j-hardfloat-linux-gnueabi/glibc arm ~arm -amd64 -~amd64

cross-armv6j-hardfloat-linux-gnueabi/gdb arm ~arm -amd64 -~amd64

```

```
coyote portage # cat /etc/portage/package.unmask/cross-armv6j-hardfloat-linux-gnueabi 

cross-armv6j-hardfloat-linux-gnueabi/binutils

cross-armv6j-hardfloat-linux-gnueabi/gcc

cross-armv6j-hardfloat-linux-gnueabi/linux-headers

cross-armv6j-hardfloat-linux-gnueabi/glibc

cross-armv6j-hardfloat-linux-gnueabi/gdb

```

J'ai mis mon emerge --info sur pastebin.com

Pourtant, c'est toujours gcc-4.4.3 qu'il tente de compiler...

----------

## xaviermiller

Démasque gcc à la main (cross-armv6j-hardfloat-linux-gnueabi/gcc )

```
<cross-armv6j-hardfloat-linux-gnueabi/gcc-9999 **

<cross-armv6j-hardfloat-linux-gnueabi/glibc-9999 **
```

```
<cross-armv6j-hardfloat-linux-gnueabi/gcc-9999

<cross-armv6j-hardfloat-linux-gnueabi/glibc-9999
```

Et ainsi, tu auras gcc-4.7 et glibc-2.16:

```
# qlist -Iv armv6 crossdev

cross-armv6j-hardfloat-linux-gnueabi/binutils-2.22-r1

cross-armv6j-hardfloat-linux-gnueabi/gcc-4.7.1

cross-armv6j-hardfloat-linux-gnueabi/glibc-2.16.0

cross-armv6j-hardfloat-linux-gnueabi/linux-headers-3.5

sys-devel/crossdev-20120721
```

----------

## gbetous

Bon bin c'est à n'y rien comprende, impossible de builder ce gcc 4.7.1

J'ai mis les unmask/keywords comme t'as dit, j'ai meme tenté en spécifiant directement les versions (crossdev -S -v -t armv6j-hardfloat-linux-gnueabi --g 4.7.1 --l 2.16.0 --b 2.22-r1), non, j'ai toujours un "vieux" gcc 4.4 qui se builde...

----------

## xaviermiller

Ne mets pas de flag "-S", qui signifie "Stable".

J'ai juste fait "crosdev -t armv6j-hardfloat-linux-gnueabi" et tout s'est bien passé.

Essaie peut-être de nettoyer l'environnement avec "crossdev -C", et vire les fichiers générés par crossdev dans /usr et /etc/portage/package.*

----------

## gbetous

Oui le -S j'ai vu, j'ai arrêté de le mettre (voir mon commentaire un peu au dessus)...

Est-ce que tu penses que c'est le fait que ma machine soit en "stable" ?

----------

## xaviermiller

Je n'en ai aucune idée. Si tu passes su IRC, essaie d'exposer ton problème sur #gentoo-embed, ils sont très réactifs.

----------

## gbetous

Ok merci du conseil.

Je reposterai ici quand j'aurai résolu.

----------

## xaviermiller

c'est #gentoo-embedded en fait

----------

