2017-05-09 41 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,等等)
相关问题