aarch64:qemu7.0.0 static compile error
Host environment
- Operating system: Arch Linux
- OS/kernel version: 5.19.0-rc7-asahi-2-1-ARCH, also tested in oracle cloud with arm using kernel 5.18.1-1-aarch64-ARCH
- Architecture: ARM
- QEMU flavor: qemu-aarch64
- QEMU version: 7.0.0
- QEMU command line:
tar -xv qemu-7.0.0.tar.xz qemu-7.0.0/configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --libexecdir=/usr/lib/qemu \ --enable-linux-user \ --disable-debug-info \ --disable-bsd-user \ --disable-werror \ --disable-system \ --disable-tools \ --disable-docs \ --disable-gtk \ --disable-gnutls \ --disable-nettle \ --disable-gcrypt \ --disable-glusterfs \ --disable-libnfs \ --disable-libiscsi \ --disable-vnc \ --disable-kvm \ --disable-libssh \ --disable-vde \ --disable-sdl \ --disable-opengl \ --disable-xen \ --disable-fdt \ --disable-vhost-net \ --disable-vhost-crypto \ --disable-vhost-user \ --disable-vhost-vsock \ --disable-vhost-scsi \ --disable-tpm \ --disable-qom-cast-debug \ --disable-capstone \ --disable-zstd \ --disable-linux-io-uring \ --disable-bpf \ --static
Description of problem
I'm trying to static compile qemu so I can chroot into different architectures and use podman for simulating amd64 containers. However, when I tried to configure using the command above, I got the following error:
FAILED: qemu-aarch64_be
c++ -o qemu-aarch64_be libcommon.fa.p/cpus-common.c.o libcommon.fa.p/page-vary-common.c.o libcommon.fa.p/disas_arm-a64.cc.o libcommon.fa.p/disas_libvixl_vixl_a64_decoder-a64.cc.o libcommon.fa.p/disas_libvixl_vixl_a64_disasm-a64.cc.o libcommon.fa.p/disas_libvixl_vixl_a64_instructions-a64.cc.o libcommon.fa.p/disas_libvixl_vixl_compiler-intrinsics.cc.o libcommon.fa.p/disas_libvixl_vixl_utils.cc.o libcommon.fa.p/disas_arm.c.o libcommon.fa.p/hw_core_cpu-common.c.o libcommon.fa.p/hw_core_machine-smp.c.o libcommon.fa.p/accel_accel-user.c.o libcommon.fa.p/common-user_safe-syscall.S.o libcommon.fa.p/common-user_safe-syscall-error.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_aarch64_signal.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_aarch64_cpu_loop.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_cpu.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_crypto_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_debug_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_gdbstub.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_iwmmxt_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_m_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_mve_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_neon_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_op_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_tlb_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_translate.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_translate-m-nocp.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_translate-mve.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_translate-neon.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_translate-vfp.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_vec_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_vfp_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_cpu_tcg.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_kvm-stub.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_cpu64.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_gdbstub64.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_helper-a64.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_mte_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_pauth_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_sve_helper.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_translate-a64.c.o libqemu-aarch64_be-linux-user.fa.p/target_arm_translate-sve.c.o libqemu-aarch64_be-linux-user.fa.p/trace_control-target.c.o libqemu-aarch64_be-linux-user.fa.p/cpu.c.o libqemu-aarch64_be-linux-user.fa.p/disas.c.o libqemu-aarch64_be-linux-user.fa.p/gdbstub.c.o libqemu-aarch64_be-linux-user.fa.p/page-vary.c.o libqemu-aarch64_be-linux-user.fa.p/semihosting_arm-compat-semi.c.o libqemu-aarch64_be-linux-user.fa.p/tcg_optimize.c.o libqemu-aarch64_be-linux-user.fa.p/tcg_region.c.o libqemu-aarch64_be-linux-user.fa.p/tcg_tcg.c.o libqemu-aarch64_be-linux-user.fa.p/tcg_tcg-common.c.o libqemu-aarch64_be-linux-user.fa.p/tcg_tcg-op.c.o libqemu-aarch64_be-linux-user.fa.p/tcg_tcg-op-gvec.c.o libqemu-aarch64_be-linux-user.fa.p/tcg_tcg-op-vec.c.o libqemu-aarch64_be-linux-user.fa.p/fpu_softfloat.c.o libqemu-aarch64_be-linux-user.fa.p/accel_accel-common.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_tcg-all.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_cpu-exec-common.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_cpu-exec.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_tcg-runtime-gvec.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_tcg-runtime.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_translate-all.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_translator.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_user-exec.c.o libqemu-aarch64_be-linux-user.fa.p/accel_tcg_user-exec-stub.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_elfload.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_exit.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_fd-trans.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_linuxload.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_main.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_mmap.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_signal.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_strace.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_syscall.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_thunk.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_uaccess.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_uname.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_flatload.c.o libqemu-aarch64_be-linux-user.fa.p/linux-user_semihost.c.o libqemu-aarch64_be-linux-user.fa.p/meson-generated_.._aarch64_be-linux-user-gdbstub-xml.c.o -Wl,--as-needed -Wl,--no-undefined -pie -Wl,--whole-archive libhwcore.fa libqom.fa -Wl,--no-whole-archive -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -static-pie -fstack-protector-strong -march=armv8-a -O2 -pipe -fstack-protector-strong -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -Wp,-D_GLIBCXX_ASSERTIONS -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--start-group libqemuutil.a libhwcore.fa libqom.fa /usr/lib/libz.a -lrt -lutil -lm -pthread -lgthread-2.0 -lglib-2.0 -lpcre -lsysprof-capture-4 -lstdc++ -Wl,--end-group
/usr/bin/ld: /usr/lib/gcc/aarch64-unknown-linux-gnu/12.1.0/../../../../lib/libglib-2.0.a(gutils.c.o): in function `g_get_user_database_entry':
gutils.c:(.text+0x324): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: gutils.c:(.text+0xf4): warning: Using 'getpwnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: gutils.c:(.text+0xe0): warning: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc/aarch64-unknown-linux-gnu/12.1.0/../../../../lib/libc.a(init-first.o): in function `__libc_init_first':
(.text+0x10): relocation truncated to fit: R_AARCH64_LD64_GOTPAGE_LO15 against symbol `__environ' defined in .bss section in /usr/lib/gcc/aarch64-unknown-linux-gnu/12.1.0/../../../../lib/libc.a(environ.o)
/usr/bin/ld: (.text+0x10): warning: too many GOT entries for -fpic, please recompile with -fPIC
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
make: *** [Makefile:163: run-ninja] Error 1
Same error for both mentioned kernels in different aarch64 hardwares.
Steps to reproduce
- Download the tarball from version 7.0.0
- Run the configure as mentioned on the above command