Cross-compil, quel environnement ?

Bonjour,

  1. Le contexte:

Une tour Debian 64 bits (encore Jessie).
Sur cette tour, une Machine Virtuelle (VM) Debian Strecht 64 bits à laquelle j’alloue 3 cœurs et 8 G0. J’ai opté pour une VM pour tester après avoir ruiné ma configuration à coup de dépots, git et librairies 32 bits.

  1. L’objectif:
    Installer une toolchain pour cross-compiler pour des raspberries (B+ actuellement). Je souhaite d’abord maîtriser en ligne de commande avant de switcher vers un IDE, genre éclipse.

  2. Mes essais:
    J’ai testé beaucoup de tutoriels (y compris de GNU Linuxmag ou de Hackable, pour arriver à des résultats fonctionnels mais souvent datés (choix du kernel, des libc, du GCC …).
    Sans être un obsédé de la dernière version, je pense qu’il faut essayer de rester, au minimum, dans la version majeure de ces briques de base (pour les patchs de sécurité ou les fonctionnalités, par exemple).
    Jusqu’à présent, tous les GCC et Linaros que j’ai pu tester, acceptaient la directive sysroot=…/…/… , ce qui me permettait d’utiliser les librairies et les includes copiés depuis mon Raspberry.
    Pour avoir la maîtrise des versions, j’ai testé de créer ma toolchain à partir de CT-NG. Après ajouts de moult éléments, j’obtiens bien une toolchain fonctionnelle, récente MPAIS:
    Elle n’accepte plus la directive sysroot= ou ne trouve pas les bonnes bibliothèques ou headers. Cela rend impossible toute compilation autre que le classique « hello.world » ce qui n’est pas d’une grande utilité.

  3. Analyse du problème:
    Aidé par mon ami google et après des pages et des pages de lecture (en anglais), il semblerait que ce problème provienne du passage à multiarch de Raspbian (jessie) et que le compilo et/ou le linker ne retrouve pas ses billes.
    Une des solutions proposées est de compiler la toolchain en statique (ce que je viens de faire) et de la faire fonctionner dans un chroot.

  4. Question:
    Qu’utilisez-vous pour cross-compiler avec une version décente des logiciels de base sachant que la Rasbian Stretch vient avec un kernel 4.9.41+, un GCC 6.3.0 (libc 2.24-11 pour Jessie).

Merci de m’avoir lu jusqu’au bout.

Sylvain

Je me réponds à moi-même pour clore le sujet car je n’ai ps trouvé d’autre solution pour passer en RESOLU.

Je vous remercie des très nombreuses réponses qui m’ont demandé beaucoup de temps pour les tester toutes, une à une :frowning_face:

Sylvain

Salut , je suis vraiment désolé que tu n’est pas plus trouver réponse a ton sujet , qui est en plus intéressent malheureusement il y a pas trop de doc en français et a jour sur le sujet , j’avoue avoir regarder le sujet , car j’avais moi même tester plusieurs truc il y a un bout de temps mais pas trouver un truc qui soit pas une usine a gaz en plus je suis pas développeur de base donc bon , j’avais fini par me tourner vers de la Virtualisation avec emulation matérielle pour compil mes truc mais c’est pas top

donc si tu a des piste je suis preneur pour le jour ou je m’y remet

On manque aussi de connaisseur sur le sujet

Bonjour,

Je vais te répondre car c’est aussi cela l’esprit du libre :slightly_smiling_face:
J’ai aussi testé l’émulation (QEMU) avec le même constat que toi.
Je suis passé par buildroot:
https://buildroot.org/
J’ai testé rapidement en prenant la conf par défaut pour ma carte (un Oi1 B+). J’ai obtenu facilement une image complète qui ne pèse pratiquement rioen, basée sur busybox et la m-libc.

Après, j’ai suivi le tuto de christian BLAESS, auteur bien connu des magazines français de référence -Linux mag, Opensilicium et Hackable):

Ce Blog est une mine d’articles très techniques et, de plus, l’auteur est très réactif (cf. sa réponse à ma question).

Pour cette essais (réussi), j’ai choisi les versions des briques de base en respectant les majeurs de ces même briques présentes sur mon Pi.(kernel, glibc, GCC) ainsi que la wiringpi.

Du coup, le programme de test a fonctionné immédiatement sur ma raspberry avec une debian stretch. (un simple scp).

Cerise sur le gâteau, j’ai aussi testé la génération complète d’un système root, en choisissant le sysinit classique au lieu de l’infâme bouse (en embarqué) de systemd. C’est bluffant mais il me reste encore à peaufiner une paire de détails pour m’affranchir de Raspbian, obèse et qui installe mille programmes inutiles en embarqué (tu joues ou tu fais de la bureautique sur un contrôleur de chauffage, moi non ?).
Pour répondre à ta dernière remarque, le positionnement marketing (mensonger) de la Fondation n’y est pas pour peu :frowning_face:
Dire que le Raspberry est un mini PC à 40€ sans mettre en avant le GPIO, ne peut qu’ameuter des utilisateurs, souvent issus du monde MS, qui ne rêvent que rétrogaming et multimédia. Au mieux, il se mettent au Python.

Sylvain

Merci , beaucoup

J’avais commencer a m’intéresser a buildroot car j’ai vu que l’équipe de Recalbox se servait de sa pour le cross-compil , j’avoue que c’est trés pointu même pour moi , mais dès que j’ai du temps je me replonges dans tous sa ,en plus le tuto est très bien détaillé et compréhensible .

Hum pour ma part j’ai l’habitude de systemd ,mais bon je vais pas aller sur ce terrain :grinning:

J’ai plein de confrère qui pense comme toi et qui reste sur du Wheezy pour sa , je sait Devuan existe

je fait pas d’embarqué en faite ,en tout cas pas encore (pas les connaissance pour ) ,mais je comprend bien sur ,le besoin d’avoir un "from scratch " pour certain projet et sa sert a rien d’avoir des éléments dont tu te sert pas pour faire jolie .

c’est a dire ?

je m’en sert pas (pas encore ) mes connaissance sont réduite en électronique ,le pi permet temps chose , une bécane petite a 40 balle qui aceuille linux moi sa me suffit pour se que je fait

figure toi certain se mette a linux comme sa ,donc c’est pas plus mal , après évidement ta ceux qui sont juste la pour qu’on le scripte des truc et utilisé des solution clé en main pour pas plonger le née dans la doc ou mettre les mains dans le cambouis , mais le libre c’est aussi sa chacun est libre de faire se qui veux avec son système :+1:

et plus on a d’utilisateur plus a n’a de contributeurs possible .

C’est ce que j’explique dans la ligne suivante. Présenter le Raspberry (même le P3) comme un mini PC est une malhonnêteté intellectuelle. L’architecture d’un PC n’a rien à voir avec un Raspberry qui pêche par l’absence de RAM, l’absence de port SATA, l’absence d’un vrai Ethernet dédié, …
Y mettre dessus une distribution aussi lourde et aussi mal paramétrée par défaut que la Debian, est une pure hérésie (swap sur carte SD par exemple).
AMHA, le point fort du Rasperry est justement ce qui est le moins mis en avant, son GPIO.

On voit ce que cela donne. Un post qui me semble correctement rédigé, dans la bonne rubrique et pas une réponse en pratiquement 3 mois :frowning_face:
J’ai publié le même message sur debian-fr.org car c’est aussi une Depbian et la tour est sous Debian. J’ai eu 2 réponses dans le même délai: 1 hors sujet, 1 qui m’a mis sur la piste de buildroot.
Manifestement, si les Debianneux sont développeurs, ils le cachent bien.

Sur ce, A+

Sylvain