lhoic
Posts: 14
Joined: Wed Sep 19, 2012 1:16 pm
Location: Auterive, France

Compilation croisée

Wed Sep 19, 2012 1:29 pm

Bonjour,

Je ne comprends pas comment mettre en place de la compilation croisée depuis mon PC.
J'ai essayé plusieurs solutions mais à chaque fois le RPi m'indique que le binaire est impossible à lancer.
Je fais donc appel à votre aide pour pouvoir résoudre ce problème.
Par ailleurs, mon PC est sous Ubuntu et mon Raspberry Pi sous Raspbian.

Merci d'avance pour vos réponses.

sinseman44
Posts: 24
Joined: Sun Jul 01, 2012 7:19 pm
Location: Toulouse
Contact: Website

Re: Compilation croisée

Thu Sep 20, 2012 7:24 am

La compilation croisée est assez simple.
A l'aide d'un compilateur ARM créé (ou installé) sur ton PC, tu vas compiler un binaire pour ta raspberry pi.
Tu ne peux pas exécuter un binaire compilé pour ton PC sur ta raspi (le jeu d'instructions compréhensible par ton processeur n'est pas le même que celui du processeur de ta raspi).
Un moyen simple de savoir si tu as bien compilé, est d'utiliser la commande file
Exemple (binaire toto compilé pour ta raspi et titi compilé pour ton PC) :

Code: Select all

# arm-unknown-linux-gnueabi-gcc toto.c -o toto
# file toto
toto : ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.0.30, stripped

# gcc titi.c -o titi
# file titi
titi : ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
Amuses-toi bien
My raspberry pi experience, in french => http://colocsbar.blogspot.fr

User avatar
PIstolero
Posts: 101
Joined: Mon Jul 23, 2012 6:28 am
Location: paradise city, where the grass is green and the girls are pretty

Re: Compilation croisée

Thu Sep 20, 2012 9:39 am

En fait il te faut un toolchain (ca se dit comme ca en Francais?)
Pour compiler le kernel qemu j´avais pris ceux de Linaro mais entre temp j´ai vu qu´ils y en a pour le RPI:
https://github.com/raspberrypi/tools

Example pour nbench:
- si tu le compile sur le RPI t´as que a faire un make et ca passe déja
- si tu le compile sur un PC x86 il faut juste changer le gcc dans le makefile
Donc je change:
CC = gcc
par

Code: Select all

CC = /home/ich/dev/raspberrypi-tools-9c3d7b6/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-gcc
Si je le change pas je compile pour x86, en changant ca je compile pour ARM. Bien sur il faut que tu adapte le chemin vers le toolchain.

lhoic
Posts: 14
Joined: Wed Sep 19, 2012 1:16 pm
Location: Auterive, France

Re: Compilation croisée

Thu Sep 20, 2012 11:40 am

Merci de vos réponses.
J'ai résolu mon problème.

En fait, je pensais tellement que mon problème venait de la toolchain que je n'avais pas vu que le reste de la commande était fausse.

J'utilisais la commande

Code: Select all

$CC -o hello.out -c hello.c
à la place de

Code: Select all

cc -o hello.out hello.c
Ce qui me créait un binaire non exécutable.

Pour le reste, c'est effectivement très simple. J'utilise la toolchain que l'on trouve sur https://github.com/raspberrypi/tools.

Merci encore.

Return to “Français”