La cross compilation c’est bien mais quand c’est simplifié c’est encore mieux. Jouer avec les variables d’environnement ou les liens symboliques pour arriver à cross-compiler quelque chose c’est un peu la galère.
D’où, j’imagine, l’idée de Sarav de faire un outil spécialement conçu dans le but de cross compiler pour plusieurs architectures mais aussi de faire des paquets SPK en 5 minutes.
Cet outil c’est syno-packager. Je l’ai forké pour l’améliorer comme Sarav semblait en avoir abandonné le développement mais il est fort possible que j’intègre le développement directement une fois le fork mergé.
Rien de plus simple que de l’utiliser, par exemple :
cd ~/dev git clone git://github.com/Diaoul/syno-packager.git
Avant de commencer à cross-compiler, il faut récupérer les toolchains ici et les mettre dans ext/precomp/ telles quelles (compressées) car syno-packager s’occupe de ça tout seul.
Ensuite, il faut récupérer les sources au format .tar.gz, .tar.bz2 ou .tgz du binaire que vous souhaitez cross compiler et vous les placez dans ext/exec/. De même pour les librairies nécessaires, à mettre dans ext/libs/.
Voilà l’étape de préparation est terminée, il est tant de commencer les choses sérieuses : la configuration.
La pièce maitresse de syno-packager est le Makefile, éditez le avec votre éditeur préféré pour choisir le paquet que vous souhaitez compiler ainsi que ses dépendances et l’architecture par défaut.
Voilà c’est terminé, le reste devrait fonctionner tout seul en faisant un petit
make
Enfin, ça c’est dans nos rêves les plus fous car il n’existe pas vraiment de standard en matière de compilation et encore moins de cross compilation. Donc on se retrouve avec des sources brutes sans fichier configure ou même parfois des configure sauce maison avec des options bizarres qu’il faut tout de même renseigner pour pouvoir cross compiler.
Donc si jamais la cross compilation ne marche pas du premier coup, ne vous affolez pas et jetez donc un oeil au Makefile pour puiser de l’inspiration car beaucoup de binaires non-standards ont déjà étés traités.
Bon courage, aventuriers !