如何从不同文件夹中的源代码编译 ubuntu 18.04 上的 glibc

如何从不同文件夹中的源代码编译 ubuntu 18.04 上的 glibc

我正在尝试在安装了 ubuntu 18.04 arm64 的 jetson nano 上虚拟化 windows 10 arm64(我无法将其升级到 ubuntu 20.04,因为 nvidia 不支持它)。为了获得最佳性能,我编译了最新版本的 qemu,如下所示:

./configure --prefix=/usr/local --target-list=aarch64-softmmu,arm-softmmu --enable-guest-agent --enable-vnc --enable-vnc-jpeg --enable-vnc-png --enable-kvm --enable-spice --enable-sdl --enable-gtk --enable-virglrenderer --enable-opengl

(之前我已经安装了以下软件包:

apt install libspice-server-dev
apt install gtk+-3.0
apt install libvirglrenderer-dev

这就是我在 arm64 上运行 qemu 的方式:

/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/win10arm/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

问题在于:

/root/Scrivania/Work/I9/win10arm/qemu/build/aarch64-softmmu/./qemu-system-aarch64: 

/lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28’ not found (required by /root/Scrivania/Work/I9/win10arm/qemu/build/aarch64-softmmu/./qemu-system-aarch64)

您可能知道,ubuntu 18.04 有这个旧版本的 glibc:

root@ziomario-desktop:# ldd --version

ldd (Ubuntu GLIBC 2.27-3ubuntu1.4) 2.27
Copyright © 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

因此,我需要找到一种方法将其升级到 2.28,如 qemu 5 所要求的那样,否则它将无法工作。我已经知道我不能将 ubuntu 18.04 的源代码与 ubuntu 20.04 的源代码混合在一起,所以我正在寻找不同的解决方案。也许尝试从不同于 ubuntu 18.04 使用的目录中的源代码编译新版本的 glibc?

答案1

Glibc 是整个系统的基础,每个软件包的构建都以它为基础。要在发行版上更改它,您需要重新编译每个软件包才能使用它。最简单的解决方案是编译 18.04 当前发布的软件版本,而不是尝试制作新的不兼容的软件。

相关内容