我是x64_86的新手,但由于RedHat在RHEL 7.x中删除了32位操作系统支持,因此不得不使用它。我必须编译很多代码,并且还没准备好跳转到x64(因为我不需要64位地址而且不想面对所有相关的移植问题)。所以我考虑过使用-m32和-mx32,并认为-mx32对我来说是最好的选择。但是,虽然-m32在我的构建机器上工作正常,但当我使用-mx32时,我收到此错误:
In file included from /usr/include/features.h:399:0,
from /usr/include/string.h:25,
from zz.cpp:1:
/usr/include/gnu/stubs.h:13:28: fatal error: gnu/stubs-x32.h: No such file or directory
# include <gnu/stubs-x32.h>
^
compilation terminated.
我在网上搜索了解决方案,一些链接表明我必须为g ++和gcc安装一些神秘的“multilib”rpms,但是,我无法在任何地方找到它们。其他人建议我必须在x32模式下安装Linux并为x32构建libgcc,这听起来极端。任何想法或线索?有人真的试过g ++ -mx32吗?也许它甚至不支持RH平台......谢谢!
P.S。为了使“-m32”选项起作用,我必须安装:
yum install glibc-devel.i686 libgcc.i686 libstdc++-devel.i686 ncurses-devel.i686
这个失败了(yum无法找到这些RPM) - 据称这些是-mx32工作所必需的:
yum install gcc-multilib g++-multilib
:(
答案 0 :(得分:0)
Multilib确实是您的答案,但不知道为什么您的仓库不支持它。我通过apt-get安装了我的:
sudo apt-get install gcc-multilib
尽管它使用64位指令,但它使用32位ABI,因此恼人的是它将无法在仅支持64位指令的WSL(Windows Linux子系统)下运行。