linux - 使用 Qemu 用户模式运行 ARM64 二进制文件的问题
问题描述
我正在尝试使用 Qemu 用户模式在我的 Kali Linux 机器上运行 ARM64 二进制文件。这是二进制
~$ file arm_binary
arm_binary: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-aarch64.so.1, Go BuildID=kuiME-kEtOrjYr0NtuSC/F9nT4PAOBdJwNF6rCoCc/7l0D-CmOuZoubD_SqInN/JtxNTIAPCIxt045aNaaC, not stripped
我可以看到它是一个 Go 程序并且是使用编译的,musl
所以我安装了musl-cross-make和musl:arm64
,libc6-dev-arm64-cross
和gcc-aarch64-linux-gnu
from apt
。
但是,每次我尝试运行它时,都会收到所有这些Error relocating: symbol not found
错误。
~$ unset LD_LIBRARY_PATH; LD_DEBUG=libs QEMU_STRACE=1 qemu-aarch64-static -L /usr/aarch64-linux-musl/ arm_binary
Error relocating /lib/aarch64-linux-musl/libgps.so: __fdelt_chk: symbol not found180208 writev(2,0x55007ff7a8,0x2) = 81
180208 writev(2,0x55007ff8a8,0x2) = 0
180208 writev(2,0x55007ff788,0x2) = 1
Error relocating /lib/aarch64-linux-musl/libgps.so: __fprintf_chk: symbol not found180208 writev(2,0x55007ff7a8,0x2) = 83
180208 writev(2,0x55007ff8a8,0x2) = 0
180208 writev(2,0x55007ff788,0x2) = 1
Error relocating /lib/aarch64-linux-musl/libgps.so: __snprintf_chk: symbol not found180208 writev(2,0x55007ff7a8,0x2) = 84
180208 writev(2,0x55007ff8a8,0x2) = 0
180208 writev(2,0x55007ff788,0x2) = 1
Error relocating /lib/aarch64-linux-musl/libgps.so: __syslog_chk: symbol not found180208 writev(2,0x55007ff7a8,0x2) = 82
180208 writev(2,0x55007ff8a8,0x2) = 0
还有更多错误,但我省略了它们。我有libgps.so
和所有其他二进制文件可能无法重新定位的文件。有谁知道问题可能是什么?
解决方案
该错误告诉您 libgps.so 需要来自其他库的 __fdelt_chk、__fprintf_chk 等符号,但没有提供它们。
在这种情况下,谷歌搜索表明这些函数 __fdelt_chk、__fprintf_chk 等应该由 libc 提供(glibc 有它们,musl 可能会提供它们以实现向后兼容性,也可能不提供)。库 libgps.so 可能与更新或不同版本的 libc 链接,而不是 sysroot 中的任何版本。
推荐阅读
- java - 从另一个类 onCreate 方法和 onActivityResult android 调用共享按钮图像
- android - 从头开始重新创建片段时Android使用什么线程?
- magento - Magento 从媒体管理器或其他东西中选择产品图片
- python - Plotly - 直方图箱大小为周
- python - django 页面上的 500 apache 服务器错误,带有联系表
- sapui5 - 如何使一组切换按钮响应
- git - GitHub中的命令上传和浏览器上传有什么区别?
- php - magento 重写模型混淆
- android - 滚动时如何在没有 UI 滞后的情况下更新 RecyclerView 内容?
- google-analytics - GA Page View 跟踪以及其他信息