Exec format error
消息通常在尝试在未针对其编译的操作系统上运行二进制可执行文件的上下文中遇到。当尝试在 64 位系统上运行 32 位可执行文件时,这一点尤为重要,反之亦然。当尝试在另一个操作系统上运行为一个操作系统编译的可执行文件时,例如在 Windows 上使用适用于 Linux 的 Windows 子系统(WSL)时,也会出现此问题。
要修复在 WSL 上使用 GCC 编译 32 位可执行文件时出现的 Exec format error
,您可以验证系统架构并相应地安装必要的包。以下是步骤:
uname -m
这将输出机器硬件名称,64 位应为 x86_64
,32 位应为 i686
。
sudo apt-get install libc6:i386 libstdc++6:i386
这将安装编译 32 位可执行文件所需的包。
sudo apt-get install libc6-dev-amd64
这将安装编译 64 位可执行文件所需的包。
-m32
:gcc -m32 -o myprogram myprogram.c
这将生成一个名为 myprogram
的 32 位可执行文件。
file
命令:file myprogram
这将输出可执行文件的体系结构,它应该与系统体系结构相匹配。
通过执行这些步骤,您应该能够修复在 WSL 上使用 GCC 编译 32 位可执行文件时出现的 Exec format error
。
要在 WSL 上运行 GCC 时修复 Exec format error 32-bit executable
,您需要安装所需的库和工具。以下是执行此操作的步骤:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
gcc -m32 -v
此命令应输出 GCC 编译器的版本和配置。
gcc -m32 -o myprogram myprogram.c
./myprogram
这些命令将编译您的程序并将其作为 32 位可执行文件运行。
就是这样! 通过安装所需的库和工具,您现在可以使用 GCC 在 WSL 上编译和运行 32 位可执行文件。
要修复 WSL 中的 Exec 格式错误 32 位可执行文件
问题,您可以针对正确的体系结构编译可执行文件。这可以通过以下步骤完成:
uname -m
gcc -m32 -o my32bitprogram myprogram.c
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
./my32bitprogram
通过为正确的体系结构编译可执行文件,您应该能够运行它而不会在 WSL 中遇到 Exec format error 32-bit executable
问题。
要修复使用 GCC 时 WSL 上的 Exec format error 32-bit executable
问题,您可以使用适当的命令解释器。以下是如何操作的示例:
打开 WSL 终端并导航到 C 文件所在的目录。
键入以下命令以使用 GCC 编译 C 文件:
gcc -m32 -o output_file input_file.c
此命令告诉 GCC 将输入文件编译为 32 位可执行文件并创建具有指定名称的输出文件。
Exec format error
消息,则表示 WSL 正在尝试使用错误的命令解释器运行 32 位可执行文件。要解决此问题,请通过键入以下命令使用适当的命令解释器:/usr/bin/ldd output_file
此命令将向您显示输出文件的依赖项,包括运行它所需的命令解释器。
/lib/ld-linux.so.2 --library-path /lib output_file
此命令告诉 WSL 使用适当的命令解释器来运行输出文件。
通过执行这些步骤,您应该能够在 WSL 上编译和运行 32 位可执行文件,而不会遇到 Exec format error
消息。