Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compilation pour une autre distrib...

2 réponses
Avatar
Laurent Pointal
Je ne sais pas si c'est exactement le bon endroit...

Je cherches à compiler des sources C/C++ sous une plateforme Mandrake
9.2 (kernel 2.4.22), pour produire du binaire destiné à tourner sur une
RedHat 7.3 (kernel 2.4.20).

La RH 7.3 fonctionne sur une petite machine PC104 (de l'ordre du Pentium
266 avec 64Mo de RAM) embarquée sur un robot alimenté uniquement
parbatterie.

Les softs à compiler, outre ce que j'écrit, contiennet entre autres
OmniORB (ORB CORBA libre). J'ai testé la compilation directe sur la RH
7.3, ça échoue (swappe fort, chauffe le disque... et dure trop longtemps
pour la batterie).

J'ai donc fait la compilation sur une machine Mandrake 9.2, là tout
nickel. Par contre, lorsque j'ai transféré le binaire sur le robot, je
suis tombé sur le problème des librairies dynamiques manquantes (là j'ai
transféré aussi ces libs) et sur le problème des versions (là je buttes
sur un GLIBC_PRIVATE non défini pour certaines librairies).

Le plus simple pour moi si ça marche:
Q? Y-a-t-il une façon de s'éviter les problèmes de version (link
statique - mais comment le demander) ?

Sinon...:
Q? Faut-il que j'installes un environnement de cross-compilation ?
Q? Est-ce faisable simplement en recopiant une partie du HD du robot (et
si oui, comment indiquer au configure/make d'utiliser les éléments
headers et libs dupliquées) ?
Q? Quelqu'un a-t-il déjà réalisé ce genre de manip ?


Si vous avez des idées, merci beaucoup.

L.Pointal.

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

2 réponses

Avatar
Dominique ROUSSEAU
Dans l'article <cof66b$eme$, Laurent Pointal a écrit :
Le plus simple pour moi si ça marche:
Q? Y-a-t-il une façon de s'éviter les problèmes de version (link
statique - mais comment le demander) ?



-static comme option de ld/gcc

Sinon...:
Q? Faut-il que j'installes un environnement de cross-compilation ?
Q? Est-ce faisable simplement en recopiant une partie du HD du robot (et
si oui, comment indiquer au configure/make d'utiliser les éléments
headers et libs dupliquées) ?
Q? Quelqu'un a-t-il déjà réalisé ce genre de manip ?



Sinon, je verrais bien une solution - assez barbare, mais effiace - à
base de chroot. Comme ça, les libs & co seront exactement les mêmes.
Par contre, en cas de modification de version ou autre d'un côté, il
faut synchroniser...

Quelques étapes pour te guide :
- tu recopies l'intégralité du contenu de la machine cible sur la
machine qui fait la cross-compilation, par exemple un /chroot-cible
- mount -t proc none /chroot-cible/proc
- chroot /chroot-cible /bin/bash
- corriger/adapter les quelques bricoles qui peuvent coincer
- tu fais ta compil

Tu peux accéder de "l'extérieur" en /chroot-cible/.... aux fichiers, si
nécessaire.
Tu peux éventuellement lancer un/des services dans le chroot, en
particulier, ssh peut être intéressant, par exemple avec une commande
comme ça :

- chroot /chroot-cible /bin/bash
- sshd -p 2222

Tu peux alors te connecter avec login/pass existants dans
l'environnement chrooté en spécifiant le port 2222 lors de ton ssh.



Dom

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Laurent Pointal
Dominique ROUSSEAU a écrit :

Dans l'article <cof66b$eme$, Laurent Pointal a écrit :



...
Sinon...:
Q? Faut-il que j'installes un environnement de cross-compilation ?
Q? Est-ce faisable simplement en recopiant une partie du HD du robot (et
si oui, comment indiquer au configure/make d'utiliser les éléments
headers et libs dupliquées) ?
Q? Quelqu'un a-t-il déjà réalisé ce genre de manip ?



Sinon, je verrais bien une solution - assez barbare, mais effiace - à
base de chroot. Comme ça, les libs & co seront exactement les mêmes.
Par contre, en cas de modification de version ou autre d'un côté, il
faut synchroniser...

Quelques étapes pour te guide :
- tu recopies l'intégralité du contenu de la machine cible sur la
machine qui fait la cross-compilation, par exemple un /chroot-cible
- mount -t proc none /chroot-cible/proc
- chroot /chroot-cible /bin/bash
- corriger/adapter les quelques bricoles qui peuvent coincer
- tu fais ta compil



Nickel. Merci.

Pour la synchro, côté install de softs je recopie le répertoire de
build, et je refait un make install sur la cible.
Et pour mes développements je fait une bête recopie du binaire pour le
tester.

A+

Laurent.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.