目标

目标

目标

我想使用 QEMU 用户模式在 x86_64 Kali Linux 上运行 ARM64 Go 二进制文件。

问题

我有aarch64-linux-musl-cross

~$ wget https://musl.cc/aarch64-linux-musl-cross.tgz
~$ tar -xvf aarch64-linux-musl-cross.tgz

然后我用来~/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc编译一个简单的 hello world Go 程序。它完全按照我想要的方式编译。

~/go_projects/bin$ file hello
hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-aarch64.so.1, Go BuildID=-37pQ_4dEsp4pnAgj4QV/0unDR_0nE-A-DsF1SfKd/-8CRGAArG5J0XNspP2M-/u6ChmkaiRo9qoxEE15eo, not stripped

但是,由于某种原因,解释器~/aarch64-linux-musl-cross/aarch64-linux-musl/lib/ld-musl-aarch64.so.1与 的链接已断开/lib/libc.so

我有一个文件/usr/aarch64-linux-gnu/lib/libc.so,但它只是一个文本文件。

~$ file /usr/aarch64-linux-gnu/lib/libc.so
/usr/aarch64-linux-gnu/lib/libc.so: ASCII text
~$ cat /usr/aarch64-linux-gnu/lib/libc.so
/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf64-littleaarch64)
GROUP ( /usr/aarch64-linux-gnu/lib/libc.so.6 /usr/aarch64-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 ) )

ld-musl-aarch64.so.1该链接应该指向什么?

答案1

哇,我在发布这篇文章后立即找到了答案......

sudo dpkg --add-architecture arm64
sudo apt update
sudo apt install -y --no-install-recommends musl:arm64
ln -f -s /lib/aarch64-linux-musl/libc.so ~/aarch64-linux-musl-cross/aarch64-linux-musl/lib/ld-musl-aarch64.so.1

相关内容