我有一个供应商提供的 deb 包,已针对 amd64 进行了编译。我目前正在运行 ARM 版 Ubuntu 服务器。
当我最初跑步时,dpkg
由于架构不匹配,我被大声呵斥。
因此我首先安装了 QEMU:
apt install qemu binfmt-support qemu-user-static
sudo dpkg --add-architecture amd64
我可以毫无问题地安装该软件包,但是在运行二进制文件时,我收到以下消息:
x86_64-binfmt-P: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory
看起来我们正在尝试从我没有的 libc6 动态链接到 amd64 库。
需要什么巫术才能获得它?
答案1
答案2
我想你想要:
sudo dpkg --add-architecture amd64
cat > /etc/apt/sources.list.d/amd64.list <<EOF
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF
sudo apt update
sudo apt install libc6:amd64
或者,如果您只需要 ld 而不需要其他依赖项,则可以跳过 multiarch 并尝试安装libc6-amd64-cross
包含以下内容的包:
/usr/x86_64-linux-gnu/lib64/ld-linux-x86-64.so.2
要qemu-x86_64
自动使用它:
sudo mkdir /etc/qemu-binfmt/
sudo ln -nsf /usr/x86_64-linux-gnu /etc/qemu-binfmt/x86_64