2017-05-09 5 views
0

J'ai un binaire dont j'ai besoin pour travailler sur un système embarqué qui utilise uclibc, le binaire a été compilé avec la glibc, est-ce que ça devrait marcher?Utilisation de l'éditeur de liens uclibc pour un fichier binaire compilé par glibc?

Je reçois une erreur disant que le binaire n'existe pas lorsque j'essaie de l'exécuter, j'ai donc vérifié quelles bibliothèques manquaient.

libc6: /lib/x86_64-linux-gnu/libdl.so.2 
libc6: /lib/x86_64-linux-gnu/librt.so.1 
libc6: /lib/x86_64-linux-gnu/libm.so.6 
libc6: /lib/x86_64-linux-gnu/libc.so.6 
libc6: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 
libc6: /lib/x86_64-linux-gnu/libnsl.so.1 

j'ai pu créer un lien symbolique tous ces mais à la version que j'ai sur mon système (les versions plus anciennes mais je pense que cela fonctionne comme le binaire ne devrait pas avoir besoin de ces nouvelles versions):

libc6: /lib/x86_64-linux-gnu/libdl.so.2  --------------------- ln -s /lib/libdl-0.9.33.2.so libdl.so.2 
libc6: /lib/x86_64-linux-gnu/librt.so.1  --------------------- ln -s /lib/librt-0.9.33.2.so librt.so.1 
libc6: /lib/x86_64-linux-gnu/libm.so.6  --------------------- ln -s /lib/libm.so.0 libm.so.6 
libc6: /lib/x86_64-linux-gnu/libc.so.6  --------------------- ln -s /lib/libc.so.0 libc.so.6 
libc6: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ---------------- 
libc6: /lib/x86_64-linux-gnu/libnsl.so.1  --------------------- ln -s /lib/libnsl-0.9.33.2.so libnsl.so.1 

ld-linux-x86-64.so.2 n'existe pas (ni aucune bibliothèque pour que je pointe vers tel que ld-2.19.so, qui est ce qu'il pointe sur mon ordinateur hôte), est-ce un éditeur de liens spécifique à la glibc? J'ai /lib/ld64-uClibc.so.0///lib/ld64-uClibc-0.9.33.2.so mais symlinking à cela n'a aucun effet (Toujours obtenir No such file or directory), est-ce même la bonne chose à faire ou dois-je obtenir ld-linux-x86-64.so.2 intégré dans le système en quelque sorte?

Répondre

1

est-ce que cela devrait fonctionner?

No.

ld-linux-x86-64.so.2 n'existe pas ... est-ce un agent de liaison spécifique de la glibc?

Oui: ld-linux fait partie de GLIBC. Le chemin d'accès est codé en dur dans le binaire (voir sortie readelf -l a.out).

ai-je besoin de faire en sorte que ld-linux-x86-64.so.2 soit intégré au système?

Vous avez deux choix:

  1. Reconstruire votre binaire contre uClibc ou
  2. Installez complet glibc (il est non seulement ld-linux que vous avez besoin, vous aurez également besoin libc.so.6, libdl.so.2, etc.)