Kali 下的 ld-linux.so.2
Kali下的ld-linux.so.2
问题描述
在给Kali安装silentEye时,运行下载得到的".run"文件时提示报错:
明明有这个文件但运行时却找不到。查找资料发现是系统位版本与文件位版本不匹配,分别查看版本:
64位的系统所用的加载动态链接库的文件是 /lib64/ld-linux-x86-64.so.2
,这是个软链接,实际上是 /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
文件,直接用该加载器去运行".run"文件会提示:
/home/sam/Public/silenteye-0.4.2.beta-ubuntu-12.04.run: error while loading shared libraries: /home/sam/Public/silenteye-0.4.2.beta-ubuntu-12.04.run: wrong ELF class: ELFCLASS32
通过 readelf -l silenteye-0.4.2.beta-ubuntu-12.04.run
查看其文件特征会发现他需要 /lib/ld-linux.so.2
这样一个interpreter,猜测这是与前面64位的 ld-linux-x86-64.so.2
对应的文件,所以需要先查找64位文件依赖的包是什么:
❯ dpkg -S ld-linux-x86-64.so.2
libc6:amd64: /lib64/ld-linux-x86-64.so.2
libc6:amd64: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
该命令查找包含已安装的特定文件的包名称,可以看见是 libc6:amd64
,冒号后的是版本。这是64位linux的系统链接库包。
先打开系统对于32位库的支持,sudo dpkg --print-architecture
可以查看本机支持的架构版本,此处为 amd64
,我们需要打开 i386(即32位)
:
dpkg --add-architecture i386
sudo apt update
sudo apt dist-upgrade
然后查看libc6有没有对应i386的包:
❯ apt search libc6
...
libc6/kali-rolling,now 2.37-5 amd64 [installed]
GNU C Library: Shared libraries
libc6-amd64/kali-rolling 2.37-5 i386
GNU C Library: 64bit Shared libraries for AMD64
amd64已安装,安装i386的即可(忽略了下面的带"-cross"的glibc包,应该是用于交叉编译的库包,但是不知道适不适用,因此不敢乱下):
sudo apt install libc6:i386
下载完毕后会在 /lib
下发现 ld-linux.so.2
这个文件,对,它就是32位系统的动态链接加载器。再次运行".run"文件发现可以成功,问题解决!
也没完全解决,这个silenteye的安装器不支持kali,因此最后安装失败= =。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程