표적

표적

표적

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

관련 정보