问题:我现在该怎么做才能让这个 32 位文件在我的 64 位 ubuntu 安装上运行?
主要错误:可执行文件格式错误。二进制文件不可执行。
我正在尝试运行 10 多年前编译的文件。该文件的配置如下:
ELF 32-bit LSB executable,
Intel 80386, version 1 (SYSV),
statically linked,
for GNU/Linux 2.2.5, stripped
我的 Ubuntu 子系统配置是:
x86_64 x86_64 x86_64 GNU/Linux
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
因此,我一直遵循本指南使 32 位文件在我的 64 位 ubuntu 安装上运行: 如何在 64 位 Ubuntu 中运行 32 位应用程序?。
本质上,我已执行以下步骤:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo apt-get install multiarch-support
之后,我运行以下命令来运行该文件:
sudo ./executeFile inputFile
这对我来说不起作用,因为我仍然收到Exec format error. Binary file not executable.
错误。
我遵循了 AskUbuntu 上的其他各种指南并安装了各种软件包。与我遵循的上述指南类似的另一个示例是运行 32 位可执行文件,使用以下命令:
sudo apt-get install --reinstall libc6-i386
sudo apt-get install libgl1-mesa-glx:i386 lsb-core
答案1
要点是使用这些命令:
sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
sudo service binfmt-support start
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install g++:i386