Ale*_*lex 8 32-bit application-launch ubuntu windows-10 windows-subsystem-for-linux
我有一个使用g++ -m32
标志编译的非常简单的应用程序。
不幸的是,当我尝试运行它时,出现错误:
bash: ./a.out: cannot execute binary file: Exec format error
Run Code Online (Sandbox Code Playgroud)
如果编译-m32
没有错误,它会按预期运行。
什么可能是问题,是否有可能解决?
编辑:
g++ -m32 --static
并不能解决问题。phu*_*clv 13
WSL2 在使用真实 Linux 内核的真实虚拟机中运行,因此实际上可以执行 Linux VM 可以执行的任何操作,包括运行 32 位代码。只需通过运行安装 32 位库
sudo dpkg --add-architecture i386
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
但同样,您真的应该选择 64 位版本,尤其是如果您有源代码。与 64 位版本相比,32 位 Linux 的维护要少得多,因为在过去十年中,只有 32 位的硬件少得多,而且用户和测试人员的数量也少得多。一个例子是 32 位 Linux 的 Meltdown/Spectre 补丁比 64 位版本晚了半年多,而且多年后仍然有问题
你根本不能那样做。WSL 不支持 32 位应用程序!
过去十年中的大多数(如果不是全部)Intel 和 AMD CPU 都支持 x86_64 指令集,Microsoft 没有理由花时间和金钱来支持 32 位版本的 Linux。无论如何,大多数开发人员和 Ubuntu 用户都在运行 64 位版本
不,我们目前不支持 x86 32 位:我们目前依赖 x64-only 指令和机制来确保快速和稳定的性能。
归档时间: |
|
查看次数: |
17322 次 |
最近记录: |