ターゲット

ターゲット

ターゲット

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

おすすめ記事