将 uclibc 链接器用于 glibc 编译的二进制文件?
Using uclibc linker for glibc compiled binary?
我有一个二进制文件,我需要在使用 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
,这是它在我的主机上指向的内容),这是 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
以某种方式进入系统?
should this work?
没有
ld-linux-x86-64.so.2 does not exist ... is this a glibc specific linker?
是:ld-linux
是 GLIBC 的一部分。它的路径被硬编码到二进制文件中(参见 readelf -l a.out
输出)。
do I need to get ld-linux-x86-64.so.2 built into the system somehow?
您有两个选择:
- 针对 uClibc 重建您的二进制文件,或者
- 安装 complete GLIBC(您不仅需要
ld-linux
;您还需要 libc.so.6
、libdl.so.2
等。 )
我有一个二进制文件,我需要在使用 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
,这是它在我的主机上指向的内容),这是 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
以某种方式进入系统?
should this work?
没有
ld-linux-x86-64.so.2 does not exist ... is this a glibc specific linker?
是:ld-linux
是 GLIBC 的一部分。它的路径被硬编码到二进制文件中(参见 readelf -l a.out
输出)。
do I need to get ld-linux-x86-64.so.2 built into the system somehow?
您有两个选择:
- 针对 uClibc 重建您的二进制文件,或者
- 安装 complete GLIBC(您不仅需要
ld-linux
;您还需要libc.so.6
、libdl.so.2
等。 )