ターゲット
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