# [résolu] [crossdev] cross compilation arm

## zerros

Bonjour,

je voudrai cross-compiler un petit utilitaire pour un sheevaplug (arm) sur ma gentoo, et j'ai installé il y a quelques temps déjà la toolchaine

qui va bien: armv5tel-softfloat-linux-gnueabi

Quand je lance la compilation, il me sort une erreur :

```
erreur fatale: openssl/aes.h : Aucun fichier ou dossier de ce type
```

Après vérification dans la toolchaine, effectivement, pas de répertoire openssl !!

Comment puis-je ajouter les manquants ? Un simple lien depuis les headers de ma machine suffirait ?

J'espère que vous pourrez m'aider.

----------

## k-root

la compilation de quoi ? d'un kernel de openssh d'un jeux pour windows ? .. quel command execute tu ?

http://dev.gentoo.org/~armin76/arm/sheevaplug/install.xml

----------

## zerros

J'essaie de compiler oscam pour le sheeva. J'ai installé la toolchain avec crossdev:

crossdev armv5tel-softfloat-linux-gnueabi

Je compile oscam de la sorte:

```
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/toolchain-arm-sheeva.cmake ..
```

Le fichier cmake contient:

```
set (OSCAM_SYSTEM_NAME SHEEVA)

set (CMAKE_SYSTEM_NAME Linux)

set (CMAKE_C_COMPILER armv5tel-softfloat-linux-gnueabi-gcc)

set (CMAKE_SYSTEM_PROCESSOR arm)
```

log de compilation:

```
System is unknown to cmake, create:

Platform/linux to use this system, please send your config file to cmake@www.cmake.org so it can be added to cmake

Your CMakeCache.txt file was copied to CopyOfCMakeCache.txt. Please send that file to cmake@www.cmake.org.

-- Unknown cross system name: <linux>

--   pthread found. Adding pthread support 

--   openssl not found.

FATAL  ssl support requested but not found! 

--   librt found (needed by libusb).

--   no libusb 1.0 found. No smartreader support

-- 

--   operating system: Unknown

--   system type: arm-unknown-unknown

--   system: unknown

--   cpu: arm

--   hw: unknown

--   use built-in crypt functions

--   use system pthread functions

-- 

-- Configuring done

-- Generating done

CMake Warning:

  Manually-specified variables were not used by the project:

    CMAKE_TOOLCHAIN_FILE

-- Build files have been written to: /opt/oscam-svn-arm/build
```

On voit qu'il y a plusieurs lib qu'il ne trouve pas dont l'openssl et libusb qui sont installé sur mon PC:

```
[I] dev-libs/openssl

     Available versions:  

   (0.9.8)   0.9.8r{tbz2}

   (0)   1.0.0d{tbz2} 1.0.0e{tbz2} (~)1.0.0e-r1{tbz2}

   {bindist gmp kerberos rfc3779 sse2 static-libs test zlib}

     Installed versions:  0.9.8r(0.9.8){tbz2}(11:35:39 13/03/2011)(zlib -bindist -gmp -kerberos -sse2 -test) 1.0.0e-r1{tbz2}(17:49:30 14/12/2011)(zlib -bindist -gmp -kerberos -rfc3779 -sse2 -static-libs -test)

     Homepage:            http://www.openssl.org/

     Description:         full-strength general purpose cryptography library (including SSL v2/v3 and TLS v1)

[I] dev-libs/libusb

     Available versions:  

   (0)   0.1.12-r5!t (~)0.1.12-r6!t 0.1.12-r7!t{tbz2}

   (1)   1.0.8{tbz2}

   {+cxx debug doc nocxx static-libs}

     Installed versions:  0.1.12-r7!t{tbz2}(09:23:02 22/12/2011)(cxx static-libs -debug -doc) 1.0.8(1){tbz2}(17:12:26 18/12/2011)(static-libs -debug -doc)

     Homepage:            http://libusb.org/

     Description:         Userspace access to USB devices

[I] virtual/libusb

     Available versions:  

   (0)   0{tbz2}

   (1)   1{tbz2}

     Installed versions:  0{tbz2}(15:12:25 12/03/2011) 1(1){tbz2}(16:44:38 12/03/2011)

     Description:         Virtual for libusb
```

Je pense que c'est libs ont été omis lors de l'installation de la toolchain. Mais comment y remédier ?

----------

## xaviermiller

Salut,

C'est une compilation à la main ? Si oui, mentionnes-tu correctement les paramètres de cross-compilation host, target, build ?

Sinon,utilises-tu  cross-emerge ? En l'occurence armv5tel-softfloat-linux-gnueabi-emerge ?

----------

## zerros

J'ai suivi ce tuto que j'ai arrangé à la mode gentoo pour la toolchain:

```
http://streamboard.gmc.to:8001/wiki/crosscompiling
```

La partie compilation est la même, sauf que je n'utilise pas leurs toolchains qui ne sont apparemment pas bonnes pour le sheeva.

Du coup j'ai installé ma toolchain via crossdev.

Par contre je ne connais pas la technique cross-emerge ?

----------

## xaviermiller

Cross-emerge cross-compile avec les outils de Portage (emerge donc). C'est le panard intégral.

Excepté perl en cross-compil..

----------

## k-root

http://gentoo-portage.com/sys-devel/crossdev

----------

## xaviermiller

Oui, notre ami connaît crossdev vu qu'il l'a installé, mais ne savait pas que crossdev installe plein de cross-truc-machins utiles  :Wink: 

----------

## zerros

bonjour,

oui, j'ai finalement vu tout ça quand j'ai remarqué des nouvelles entrées dans mon fichier package.use

Finalement j'ai fini par tout virer pour tout recommencer !

Bon j'ai mon crossdev installé et également cross-emerge. Comment installer ma toolchain pour qu'elle intègre toutes les libs que j'ai besoin

pour arm (openssl, libusb, etc.) ?

Jusqu'à présent je faisais un crossdev armv5tel-softfloat-linux-gnueabi, et il prenait le temps de tout installer, pour au final me retrouver avec des erreurs

car il manquait les libs openssl, libusb etc.

Je veux bien passer par cross-emerge que je ne connait pas, mais :

```
xxx@xxx [ ~ ] :: man cross-emerge

Il n'y a pas de page de manuel pour cross-emerge.
```

----------

## xaviermiller

c'est XXXXX-emerge  :Wink: 

Emerge t'installera normalement ce qu'il faut. Si les dépendences ne s'activent pas, il faudra jouer avec --with-bdeps ou --root-deps

----------

## zerros

ok, alors si je comprend bien, il suffit d'installer openssl pour la toolchaine installée par crossdev ??

CHOST=armv5tel-softfloat-linux-gnueabi cross-emerge openssl

Je ne pige pas me fonctionnement et je ne trouve pas vraiment de doc lié à cette méthode. Auriez-vous un exemple concret à me donner svp ?

----------

## xaviermiller

non, ce n'est pas cross-emerge !!!

Mais arm-truc-muche-emerge  :Wink: 

Les dépendances seront gérées comme dans ton installation normale, donc tu n'emerges que les paquets "end user", et les dépendances (dont openssl) devraient remonter automatiquement.

Si tu as besoin d'un chroot complet, voire bootable, il faut générer d'abord le stage 1 (je te l'explique si nécessaire  :Wink: )

----------

## zerros

 *XavierMiller wrote:*   

> non, ce n'est pas cross-emerge !!!
> 
> Mais arm-truc-muche-emerge 
> 
> Les dépendances seront gérées comme dans ton installation normale, donc tu n'emerges que les paquets "end user", et les dépendances (dont openssl) devraient remonter automatiquement.
> ...

 

Ok, alors je devrai faire:

```
armv5tel-softfloat-linux-gnueabi-emerge openssl
```

Pour le stage1, pas de soucis, j'ai bien compris. J'ai installé le sheeva à l'origine, alors je pense m'en sortir pour un chroot complet  :Wink: 

Là ma préoccupation est juste de compiler un package pour une autre arch :p

Bon quand je lance la commande, il me renvoi ça:

```
root@xxx [ ~ ] :: armv5tel-softfloat-linux-gnueabi-emerge -av openssl

!!! /usr/armv5tel-softfloat-linux-gnueabi/etc/make.profile is not a symlink and will probably prevent most merges.

!!! It should point into a profile within /usr/portage/profiles/

!!! (You can safely ignore this message when syncing. It's harmless.)

 * IMPORTANT: 1 news items need reading for repository 'gentoo'.

 * Use eselect news to read news items.

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  N     ] sys-apps/coreutils-8.14 to /usr/armv5tel-softfloat-linux-gnueabi/ USE="-acl -caps -gmp -nls (-selinux) -static -unicode -vanilla -xattr" 0 kB

[ebuild  N     ] sys-apps/debianutils-4.1 to /usr/armv5tel-softfloat-linux-gnueabi/ USE="-static" 0 kB

[ebuild  N     ] dev-libs/openssl-1.0.0f to /usr/armv5tel-softfloat-linux-gnueabi/ USE="bindist zlib -gmp -kerberos -rfc3779 -sse2 -static-libs -test" 0 kB

[ebuild  N     ] app-misc/ca-certificates-20111025 to /usr/armv5tel-softfloat-linux-gnueabi/ 0 kB

Total: 4 packages (4 new), Size of downloads: 0 kB

Would you like to merge these packages? [Yes/No] 
```

impecc il va chercher les dépendances. Par contre il finit par planter:

```
checking whether fstatat (..., 0) works... configure: error: in `/usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/work/coreutils-8.14':

configure: error: cannot run test program while cross compiling

See `config.log' for more details

!!! Please attach the following file when seeking support:

!!! /usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/work/coreutils-8.14/config.log

 * ERROR: sys-apps/coreutils-8.14 failed (configure phase):

 *   econf failed

 * 

 * Call stack:

 *          ebuild.sh, line   75:  Called src_configure

 *        environment, line 2432:  Called econf '--with-packager=Gentoo' '--with-packager-version=8.14 (p1)' '--with-packager-bug-reports=http://bugs.gentoo.org/' '--enable-install-program=arch' '--enable-no-install-program=groups,hostname,kill,su,uptime' '--enable-largefile' '--disable-libcap' '--disable-nls' '--disable-acl' '--disable-xattr' '--without-gmp'

 *   phase-helpers.sh, line  467:  Called die

 * The specific snippet of code:

 *            die "econf failed"

 * 

 * If you need support, post the output of 'emerge --info =sys-apps/coreutils-8.14',

 * the complete build log and the output of 'emerge -pqv =sys-apps/coreutils-8.14'.

 * The complete build log is located at '/usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/temp/build.log'.

 * The ebuild environment file is located at '/usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/temp/environment'.

 * S: '/usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/work/coreutils-8.14'

>>> Failed to emerge sys-apps/coreutils-8.14 for /usr/armv5tel-softfloat-linux-gnueabi/, Log file:

>>>  '/usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/temp/build.log'

 * Messages for package sys-apps/coreutils-8.14 merged to /usr/armv5tel-softfloat-linux-gnueabi/:

 * ERROR: sys-apps/coreutils-8.14 failed (configure phase):

 *   econf failed

 * 

 * Call stack:

 *          ebuild.sh, line   75:  Called src_configure

 *        environment, line 2432:  Called econf '--with-packager=Gentoo' '--with-packager-version=8.14 (p1)' '--with-packager-bug-reports=http://bugs.gentoo.org/' '--enable-install-program=arch' '--enable-no-install-program=groups,hostname,kill,su,uptime' '--enable-largefile' '--disable-libcap' '--disable-nls' '--disable-acl' '--disable-xattr' '--without-gmp'

 *   phase-helpers.sh, line  467:  Called die

 * The specific snippet of code:

 *            die "econf failed"

 * 

 * If you need support, post the output of 'emerge --info =sys-apps/coreutils-8.14',

 * the complete build log and the output of 'emerge -pqv =sys-apps/coreutils-8.14'.

 * The complete build log is located at '/usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/temp/build.log'.

 * The ebuild environment file is located at '/usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/temp/environment'.

 * S: '/usr/armv5tel-softfloat-linux-gnueabi/tmp/portage/sys-apps/coreutils-8.14/work/coreutils-8.14'

 * IMPORTANT: 1 news items need reading for repository 'gentoo'.

 * Use eselect news to read news items.

```

Je dois louper quelque chose quelque part !!

----------

## xaviermiller

C'est normal : certaines versions de paquets ne cross-compilent pas en instable.

Voici mon package.mask (à mettre dans /usr/arm-trucmuche/etc/portage) ;

```
 

#juste parce que j'aime pas python =:o)>

>=dev-lang/python-3

>=sys-apps/util-linux-2.19

=sys-apps/sysvinit-2.88-r3

>=sys-apps/coreutils-8.13

```

Et pour ignorer perl :

```

dev-lang/perl-5.12.4

```

Il faudra probablement ajouter libperl, mais je suis pour le moment à faire un stage 1, qui est presque fini (ça plante sur python, je vais creuser après le bain du petit...)

----------

## xaviermiller

Et pour python:

 *manaru wrote:*   

> Hi,
> 
> Its 
> 
> https://bugs.gentoo.org/show_bug.cgi?id=362945
> ...

 

----------

## zerros

dsl pour le temps de réponse, j'ai été pas mal occupé ces derniers temps.

Ok, j'ai compris que python a un bug. Pas grave, j'ai cross compilé sur une debian pour ne pas trop trifouiller mon PC qui stable depuis un certain temps.

Tout roule  :Wink: 

Merci pour les infos en tout cas. Je dormirai moins bête ce soir lol  :Smile: 

----------

