Re: commande Debian pour obtenir un -rpath suffisamment bon (et portable)
Étienne Mollier <[email protected]> Thu, 18 Jun 2026 20:37:00 +0200
| Newsgroups | gmane.linux.debian.user.french |
|---|---|
| Message-ID | <[email protected]> |
Bonjour Basile, Malgré ma lecture de ton message et des messages que tu références sur les autres listes de diffusion, je ne suis pas certain d'avoir compris le problème initial que tu essaies de résoudre. Il est donc probable que je réponde un peu à côté. Avec un peu de chances, j'espère que tu trouveras peut-être au moins quelque information intéressante. > L'option -rpath passée à l'éditeur de lien (le plus souvent via le > compilateur /usr/bin/g++ ou /usr/bin/gcc ...) permet d'écrire dans le > binaire executable ELF l'information qui serait transmise par un > LD_LIBRARY_PATH (que je ne veux pas utiliser, mais ldconfig sous root). L'option -rpath me semble surtout utile pour la distribution de logiciels « clé en main » dans une archive tar, dans laquelle sont également embarqué des bibliothèques associées au programme, mais qui n'ont pas à faire partie intégrante du système d'exploitation. Typiquement, l'édition de lien se fera relativement au répertoire de ton binaire avec une substitution $ORIGIN : gcc -Wl,-rpath,'$ORIGIN/../lib' De cette manière, un binaire dans /opt/refpersys/bin ira chercher ses bibliothèques dans /opt/refpersys/lib. Le manuel de ld.so(8) contient un paragraphe à ce sujet [1], dont la commande que je me suis permis de copier et coller. J'en recommande la lecture, il s'y trouve pas mal d'autres astuces méconnues et parfois utiles. [1] : https://manpages.debian.org/trixie/manpages-fr/ld.so.8.fr.html#Mots-cl%C3%A9s_de_cha%C3%AEne_dynamiques > Sur un Debian/Trixie ou Sid AMD64 je veux obtenir aussi bien > /lib/x86_64-linux-gnu que /usr/lib/x86_64-linux-gnu et donc la chaîne > de caractères (dans un GNU makefile un peu compliqué) > > > /lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/ > > quelle est donc la commande qui me permet de construire cette chaîne > (dans un GNUmakefile)? Je suggérerais de ne pas chercher à spécifier les répertoires système dans le -rpath. Normalement, ils sont configurés dans /etc/ld.so.conf (et /etc/ld.so.conf.d/*), configuration appliquée via ldconfig. Soit ils sont correctement configurés, soit il y a de fortes chances pour que le système en question ne soit pas en état de marche. Pour Debian sur x86_64, /usr/lib/x86_64-linux-gnu/ fait déjà partie de la configuration de l'éditeur de liens : $ grep 'lib/x86_64-linux-gnu$' /etc/ld.so.conf.d/* /etc/ld.so.conf.d/x86_64-linux-gnu.conf:/usr/local/lib/x86_64-linux-gnu /etc/ld.so.conf.d/x86_64-linux-gnu.conf:/usr/lib/x86_64-linux-gnu Ce sera la même chose sur Raspberry Pi, avec un chemin du type /usr/lib/aarch64-linux-gnu pour les modèles en 64-bit. D'autre part, comme l'a souligné didier gaumet, /lib est un lien symbolique vers /usr/lib, donc leurs contenus sont les mêmes, rigoureusement : $ readlink -f /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu Si ce n'est pas le cas, c'est-à-dire sur une machine n'implémentant pas usrmerge, alors /lib/x86_64-linux-gnu devra en toute logique faire partie de la configuration de l'éditeur de liens. > En lien avec cette question > https://lists.gnu.org/archive/html/help-make/2026-06/msg00008.html > https://lists.gnu.org/archive/html/lightning/2026-06/msg00006.html Je ne suis pas convaincu que le problème décrit dans le fil de discussion sur la liste lightning (à savoir : un problème de couplage fort avec les libopcodes et libbfd de binutils) puisse être résolu en ajustant le DT_RUNPATH. Je crois que la solution que tu as trouvé, c'est-à-dire ajuster l'ordre d'édition des liens, devrait être suffisante : >> A working solution is to link explicitly -lopcodes and -lbfd >> after -llightning. Bonne soirée, :) -- .''`. Étienne Mollier <[email protected]> : :' : pgp: 8f91 b227 c7d6 f2b1 948c 8236 793c f67e 8f0d 11da `. `' sent from /dev/pts/3, please excuse my verbosity `-
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEj5GyJ8fW8rGUjII2eTz2fo8NEdoFAmo0OssACgkQeTz2fo8N Edoq4A/+PNrUdPNcJZ5zzJNlXJCTPA6INt5LW2LQvLvTBebLuJDfKA6C9LUb7woX uO8bDttFZrfae4DdWGosd5hosWmn+zQyPlKzpxHvnK4FvJrGVvXVr7LZB5OIEWym lKpzz/DB4BhNyjD/swx0OySiKBz5weYHwsXrqeiIC4AVfgn6nobssk1lsI1FeocL HZKH3c4RU3yzfTYPvAqooaL9ZsNcNC8MOJYvTaH9jCngpVNucPt/8zXoIedPfzlh EdL0ook6GMUaz43UuBxsPlb/mr26S739glkwOKieDXwWnnYRP8dmxmFCg6nEn4iD auo5afkla7xgY9d6BdPtL94iN8N0FVXhzyPM7E7o7nCSKIyjzNX3xjq4tsrJtdFi MOFxFTxYDYfNA933ZD+orknB2SA5j8o1Rhy24pCqhKy8PxHbvJFO1NpUEQYIOnid J2qaq1tG3syWEheQ8vKd+lQzdrUQ1Zy2DOUMaNbz1TU1WST2o2JKePUxmxCReqmd 2AJU59ccQttwMQ1Ceyy0WIumVJnc0SMkIzZhudZeCL73Ey/cWESKro630v4YqLhD 0fOnE8VvHRn5eJEmnCZBCL+GEUC7wP42En4tWYYNskU/QO/Z4sWh/txqK4f3Gj2H 5GqM9Ie0yqDd8S2D2hyf75x2iv5EKcgCTcUwt+nEXkqOO0IA6s4= =h+1Q -----END PGP SIGNATURE-----