| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| dev:outils:eldk [2012/12/23 19:25] – root | dev:outils:eldk [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| ====== ELDK ===== | ====== ELDK ===== |
| |
| Embeded Linux Development Kit est un ensemble de chaines de compilation croisées directement disponibles sous formes de binaires sous licence GPL. Créées par la société DENX Softwware Engineering, la version actuelle est la v5.3. Ces versions précompilées sont donc facilement installables sur la machine hôte. Autre point fort ELDK inclus un certain nombre de bibliothèques usuelles précompilées.\\ | Embeded Linux Development Kit est un ensemble de chaines de compilation croisées directement disponibles sous formes de binaires sous licence GPL. Créées par la société DENX Software Engineering, la version actuelle est la v5.3. Ces versions précompilées sont donc facilement installables sur la machine de développement. Cela permet d'éviter l'étape complexe de compilation de la chaine elle-même. Autre point fort ELDK inclus un certain nombre de bibliothèques usuelles précompilées et des images de systèmes embarqués.\\ |
| En revanche, cet outil n'existe que pour des hôtes de type GNU/Linux/X86 et les cibles sont limitées. Comme ce sont des binaires, il n'est pas possible de modifier les versions des composants tels que gcc ou la glic. | En revanche, cet outil n'existe que pour des hôtes de type GNU/Linux/X86 et les cibles sont limitées. Comme ce sont des binaires, il n'est pas possible de modifier les versions des composants tels que gcc ou la Glibc. |
| |
| |
| ===== Installation ===== | ===== Installation d'une chaine pour ARM11 ===== |
| |
| La procédure d'installation est détaillée sur le site d'ELDK. J'ai choisis ici d'installer une chaine de compilation pour une architecture cible à base d'ARM11 correspondant au processeur de ma carte Raspeberry Pi B. | La procédure d'installation est détaillée sur le site d'ELDK à la page http://www.denx.de/wiki/ELDK-5/WebHome. J'ai choisis ici d'installer une chaine pour une architecture cible ARM11 correspondant au processeur de ma carte Raspeberry Pi B. |
| |
| Sur la machine hôte, créer le répertoire d'accueil de l'application et le sous répertoire correspondant à la cross toolchain souhaitée. La documentation du projet (section 1.5, Supported Target Architectures) m'indique que pour les cibles ARM11 il faut utiliser la croos toolchain disponible dans ./armv6 | Sur la machine hôte, créer le répertoire d'accueil de l'outil et le sous répertoire correspondant à la cross toolchain souhaitée (Respecter l'arborescence pour que le script d'installation a executer plus tard fonctionne correctement). La documentation du projet (''//section 1.5, Supported Target Architectures//'') m'indique que pour les cibles ARM11 il faut utiliser la cross toolchain disponible dans ./armv6 |
| |
| | Création de l'arborescense |
| <code bash> | <code bash> |
| yoann@hermes:/opt$ sudo mkdir -p /opt/eldk-5.3/targets/armv6 | yoann@hermes:/opt$ sudo mkdir -p /opt/eldk-5.3/targets/armv6 |
| </code> | </code> |
| |
| Télécharger le script d'installation et les archives correspondant à la chaine souhaitée. | Télécharger le script d'installation, le fichier de conf et de l'archive correspondant à la chaine souhaitée. |
| <code bash> | <code bash> |
| yoann@hermes:/opt$ cd eldk-5.3/ | yoann@hermes:/opt$ cd eldk-5.3/ |
| yoann@hermes:/opt/eldk-5.3$ wget ftp://ftp.denx.de/pub/eldk/5.3/install.sh | yoann@hermes:/opt/eldk-5.3$ wget ftp://ftp.denx.de/pub/eldk/5.3/install.sh |
| | yoann@hermes:/opt/eldk-5.3$ cd targets/armv6/ |
| | yoann@hermes:/opt/eldk-5.3/targets/armv6$ ncftp ftp://ftp.denx.de/pub/eldk/5.3/targets/armv6 |
| | ncftp ...eldk/5.3/targets/armv6 > get target.conf |
| | ncftp ...eldk/5.3/targets/armv6 > get eldk-eglibc-i686-arm-toolchain-gmae-5.3.sh |
| | ncftp ...eldk/5.3/targets/armv6 > get armv6.sha256 |
| | ncftp ...eldk/5.3/targets/armv6 > quit |
| </code> | </code> |
| |
| Executer le script d'installatio | Test d'intégrité des fichiers |
| <code bash> | <code bash> |
| ./install -r - armv6 | yoann@hermes:/opt/eldk-5.3/targets/armv6$ sha256sum -c armv6.sha256 |
| </code> | </code> |
| |
| ===== Test compilaation ==== | Une fois les fichiers nécessaires à l'installation de la chaine présents sur l'hôte, exécuter le script d'installation. Pour afficher les options, invoquer le script avec l'argument **-h** |
| | <code bash> |
| | yoann@hermes:/opt/eldk-5.3/targets/armv6$ cd ../.. |
| | yoann@hermes:/opt/eldk-5.3$ chmod 755 ./install.sh |
| | yoann@hermes:/opt/eldk-5.3$ ./install -r - armv6 |
| | </code> |
| |
| | Remarque: l'option **-r -** indique de ne pas tenter l'installation d'une image système pour la cible (Les différentes images systèmes disponibles sont décrites dans la section ''//1.5 Supported Target Configurations//''). Ici, aucune image système n'a été téléchargée depuis le ftp, on souhaite simplement installer/tester la chaine de compilation croisée. |
| | |
| | ===== Test compilation ==== |
| | |
| | Créer le fichier source |
| <code bash> | <code bash> |
| | yoann@hermes:/opt/eldk-5.3/armv6$ cat << EOF > hello.c |
| | > #include <stdio.h> |
| | > int main(int argc, char** argv){ |
| | > printf("HelloWorld\n"); |
| | > return 0; |
| | > } |
| | > EOF |
| | </code> |
| |
| | Charger l'environnement nécessaire à la compilation croisée à l'aide du script disponible et lancer la compilation du fichier source. |
| |
| | <code bash> |
| | yoann@hermes:/opt/eldk-5.3/armv6$ source environment-setup-armv6-vfp-linux-gnueabi |
| | yoann@hermes:/opt/eldk-5.3/armv6$ arm-linux-gnueabi-gcc -o helloWorld hello.c |
| | </code> |
| | |
| | Afficher les caractéristiques du fichier binaire compilé précédemment: |
| | <code bash> |
| | yoann@hermes:/opt/eldk-5.3/armv6$ file helloWorld |
| | helloWorld: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped |
| | </code> |
| |
| ===== sources ===== | ===== Références ===== |
| * http://www.denx.de/wiki/ELDK-5/WebHome | * http://www.denx.de/wiki/ELDK-5/WebHome |
| * Linux embarqué, Pierre Ficheu et Eric Bénard | * Linux embarqué, Pierre Ficheu et Eric Bénard |
| |