为了教育目的,我想使用 glibc-2.33 运行最新版本的 qemu,而不是在 18.04 上默认安装的 glibc。最终目标是在安装了 ubuntu 18.04 的 jetson nano 上虚拟化 windows 10 arm64。所以这就是我所做的:
wget https://launchpad.net/glibc/head/2.33/+download/glibc-2.33.tar.gz
tar -xf glibc-2.33.tar.gz
mkdir build-glibc-2.33
cd build-glibc-2.33
/root/Scrivania/Work/I9/win10arm/glibc-2.33/./configure --prefix=/opt/glibc-2.33
SYSROOT=/opt/glibc-2.33
LDFLAGS="-L${SYSROOT}/lib -Wl,-rpath=${SYSROOT}/lib -Wl,--dynamic-linker=${SYSROOT}/lib/ld-2.33.so" CFLAGS="-I${SYSROOT}/include --sysroot=${SYSROOT}" make
LDFLAGS="-L${SYSROOT}/lib -Wl,-rpath=${SYSROOT}/lib -Wl,--dynamic-linker=${SYSROOT}/lib/ld-2.33.so" CFLAGS="-I${SYSROOT}/include --sysroot=${SYSROOT}" make install
GLIBC=/root/Scrivania/Work/I9/win10arm/build-glibc-2.33
GCONV_PATH=${GLIBC}/iconvdata LC_ALL=C \
${GLIBC}/elf/ld.so --library-path \
${GLIBC}:\
${GLIBC}/math:\
${GLIBC}/elf:\
${GLIBC}/dlfcn:\
${GLIBC}/nss:\
${GLIBC}/nis:\
${GLIBC}/rt:\
${GLIBC}/resolv:\
${GLIBC}/crypt:\
${GLIBC}/nptl:\
#${GLIBC}/dfp \
/root/Scrivania/Work/I9/win10arm/qemu/build/aarch64-softmmu/./qemu-system-aarch64 -M virt-2.12 -enable-kvm -cpu host -smp 2 -m 2048 -device qemu-xhci -device usb-kbd -device usb-mouse -drive file=/root/Scrivania/Work/isoarm/win10arm.qcow2,if=virtio -nic user,model=virtio -device usb-storage,drive=install -device usb-storage,drive=drivers -drive file="$isoname1",if=none,id=install,media=cdrom,readonly=on -drive file="$virtio",if=none,media=cdrom,readonly=on,id=drivers -bios /root/Scrivania/Work/I9/win10arm/QEMU_EFI.fd -device ramfb
但错误是:
**Inconsistency detected by ld.so: get-dynamic-info.h: 141: elf_get_dynamic_info: Assertion `info[DT_RUNPATH] == NULL' failed!**
但无论如何 qemu 运行正常。我不知道它是否能克服错误运行。
答案1
我安装glibc
使用homebrew
并遇到了这个问题:
Inconsistency detected by ld.so: get-dynamic-info.h: 143: elf_get_dynamic_info: Assertion `info[DT_RPATH] == NULL' failed!
这和你的类似,我参考了链接:
Homebrew/讨论:glibc
在 Centos 7 上安装 Homebrew 的困难 - GitHub。
最后,我使用命令patchelf --remove-rpath /my/libdir/ld-linux-x86-64.so.2
来处理它。ld-linux-x86-64.so.2
是的符号链接ld.so
。希望这能帮到你。