2017-05-09 2 views
0

Ich habe eine Binärdatei, die ich brauche, um an einem eingebetteten System zu arbeiten, das uclibc verwendet, die Binärdatei wurde gegen glibc kompiliert, sollte das funktionieren?Verwenden von uclibc Linker für glibc kompilierte Binärdatei?

Ich bekomme eine Fehlermeldung, dass die Binärdatei nicht existiert, wenn ich versuche, es auszuführen, also habe ich überprüft, welche Bibliotheken fehlten.

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 

konnte ich alle diese aber eine auf die Version, die ich auf meinem System Symlink (ältere Versionen, aber ich würde erwarten, dass es als das binäre diese neuen Versionen müssen nicht arbeiten):

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 nicht existiert (noch eine Bibliothek für mich als ld-2.19.so solche zu zeigen, das ist, was es auf meinem Host-PC zeigt), ist dies ein glibc spezifischen Linker? Ich habe /lib/ld64-uClibc.so.0///lib/ld64-uClibc-0.9.33.2.so aber Symlinking, dass keine Wirkung hat (Immer noch No such file or directory), ist das sogar das Richtige zu tun oder muss ich ld-linux-x86-64.so.2 irgendwie in das System eingebaut bekommen?

Antwort

1

sollte das funktionieren?

Nr

ld-linux-x86-64.so.2 existiert nicht ... ist dies ein glibc spezifischen Linker?

Ja: ld-linux ist Teil von GLIBC. Der Pfad dazu ist fest in die Binärdatei codiert (siehe readelf -l a.out Ausgabe).

Muss ich ld-linux-x86-64.so.2 irgendwie in das System einbauen?

Sie haben zwei Möglichkeiten:

  1. gegen uClibc Erstellen Sie Ihre Binär- oder
  2. Installieren komplette GLIBC (es ist nicht nur ld-linux, die Sie benötigen, müssen Sie auch libc.so.6, libdl.so.2, usw.)
Verwandte Themen