2017-05-09 24 views
0

私はuclibcを使用する組み込みシステムで作業するために必要なバイナリを持っています。このバイナリはglibcに対してコンパイルされていますが、これはうまくいきますか?glibcコンパイル済みバイナリにuclibcリンカを使用していますか?

実行しようとするとバイナリが存在しないというエラーが表示されるので、不足しているライブラリを確認しました。

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 

私は私のシステムで持っているバージョンにこれらのすべてが、1つのシンボリックリンクすることができました(古いバージョンをが、バイナリは、これらの新しいバージョンを必要はありませんように私はそれが動作するように期待する):

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(私のホストPCで指し示すものであるld-2.19.soなどの私が指すライブラリもありません)これはglibcに固有のリンカですか?私は/lib/ld64-uClibc.so.0///lib/ld64-uClibc-0.9.33.2.soを持っていますが、シンボリックは効果がありません(まだNo such file or directoryを取得します)、それは正しいことでも、何とかシステムに組み込まれたld-linux-x86-64.so.2を取得する必要がありますか?

答えて

1

存在しない

LD-のlinux-x86-64.so.2 ...これはglibcの特定のリンカーでありますか?

はい:ld-linuxはGLIBCの一部です。そのパスはバイナリにハードコードされています(readelf -l a.out出力を参照)。

どうやってシステムにld-linux-x86-64.so.2をインストールする必要がありますか?

次の2つの選択肢があります:完全 GLIBCをインストール

  1. をuClibcをに対するあなたのバイナリを再構築し、または
  2. (それはあなたが必要とするだけでld-linuxではありません。あなたもlibc.so.6libdl.so.2が必要になります、等)
関連する問題