2017-05-09 85 views
0

我有一個二進制文件,我需要在使用uclibc的嵌入式系統上工作,二進制文件是針對glibc編譯的,應該如何工作?使用uclibc鏈接器進行glibc編譯的二進制文件?

我得到一個錯誤,說當我嘗試運行它時,該二進制文件不存在,所以我檢查了哪些庫丟失了。

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 

我能夠所有這些,但一個符號鏈接到我的系統上我的版本(舊版本,但我希望它的工作作爲二進制不應該需要這些新版本):

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不存在(也沒有任何庫指向如ld-2.19.so,這是它指向我的主機pc上),這是一個特定於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內置到系統中?

你有兩個選擇:

  1. 重新生成二進制對uClibc的,或
  2. 安裝完整 GLIBC(它不只是ld-linux你需要,你還需要libc.so.6libdl.so.2,等等)
相關問題