Buildroot - Cross_compil

Bjr,
En utilisant cette toolchain, comment être sûr qu’une compil est faite avec ucLibc ?

Quand je lis ce résultat j’ai un doute# ldd busybox linux-gate.so.1 => (0xb775b000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75f0000) /lib/ld-linux.so.2 (0xb775c000)

Salut,

Si tu utilises Buildroot pour faire ta busybox, tu dois avoir un dossier toolchain_build_xxx
avec xxx ton type de processeur.
Dessous doit être la uClibc.

re-
J’ai installé une version de décembre 2009, donc je crois que la structure a changé.
Avant c’était

Maintenant

Donc dans les 2 cas ça semble bon.
Je pense que c’est le chemin vers uClibc qui n’est pas bien indiqué, mais je ne vois pas comment faire.
J’ai fait un essai dans .bashrc [quote]export PATH=$PATH:/home/src_tosh/buildroot/output/staging/usr/bin[/quote]mais rien n’a changé

Modifies ton LD_LIBRARY_PATH, ldd t’indique le chainage en utilisant les librairies existantes sur la machines et non celles que tu as prévues. Heureusement d’ailleurs, ça permet aux vieilles version de pouvoir encore fonctionner. Pas exemple sur les vieilles libc6, tu avais une fonction errno qui est devenu un define. Pour faire toutner les programmes te répondant

[quote]symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference[/quote] ou encore[quote]symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6[/quote]tu peux rajouter une petite librairie définissant cette fonction (va voir sur http://boisson.homeip.net/ ou si tu veux ces librairies http://boisson.homeip.net/libc6/). Donc ton ldd ne prouve rien du tout, il faut que tu le fasse dans ton environnement final.

re-
J’ai donc monté le rootfs/target pour faire un chroot.
Il apparait que, busybox compilé en dynamique, et bien que uclibc soit présente dans /lib, le chroot est refusé par chroot: failed to run command `/bin/bash': No such file or directoryet même erreur avec ash ou sh
Par contre busybox compilé en statique permet le chroot.

Alors comme je débute dans le métier, à quel endroit, dans buildroot, dois-je indiquer le chemin vers uclibc : le makefile pour la compil de busybox ? sous quel item ?
@fran.b : j’ai essayé un export LD_LIBRARY_PATH etc… mais si je ne connais pas le chemin…

Je cherche de mon coté, mais un coup de main serait le bienvenu

A priori les librairies sont dans /lib sur un petit système, ou Lib et /usr/lib

re-
Donc rajouté dans /etc/profile le chemin vers /lib et /usr/lib, mais toujours pas de changement (ce qui n’est pas étonnant je crois, puisque c’est le chemin résident)

Quelqu’un connait-il une commande pour connaitre avec quelle libc6 ou uclibc est compilée une appli ?
Ou alors comment indiquer à coup sûr le bon chemin à la toolchain ? (et non pas dans le système cible)

Avec ldd, tu peux savoir si ton programme trouve ce qu’il veut sur place. Les librairies ne sont que des symboles que ld-linux.so se chargent de trouver dans les librairies partagées…

Salut,

Tu devrais essayé de compiler dans un autre type de processeur tu pourrais ainsi mieux tracer tes chemins.

Sinon à la compile tu peux rediriger l’affichage de la compile pour analyse ultérieur en faisant:

make 2>&1 |tee make.result

:smt024

re-
@fran.b : je ne comprends pas, tu sembles dire le contraire de ton premier poste. Mais pas de souci. J’ai recompilé buildroot, puis busybox avec de nouveau buildroot ensemble, le tout en chroot et en root et ça fonctionne. D’ailleurs voici la sortie [code]phlinux:~# tosh
Chroot dans /media/tosh…

ldd /bin/busybox

libc.so.0 => /lib/libc.so.0 (0xb773a000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0xb7775000)[/code]Ce qui prouve que ldd donne bien ce avec quoi on compile

@Dixippe : je garde sous le coude, car effectivement les chemins dans buildroot changent d’une version à l’autre, et comme je suis pas doué c’est le bronx

Merci à tous les deux, je vais allé voir si le 1910 peut tourner avec du Lenny

Merci encore