如何让"g++ -mx32"在 RHEL 7.2 上工作

How to get "g++ -mx32" to work on RHEL 7.2

本文关键字:工作 RHEL -mx32 g++      更新时间:2023-10-16

我是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"rpm,然而,我在任何地方都找不到这些。其他人建议我必须在x32模式下安装Linux并为x32构建libgcc,这听起来有些极端。有什么想法或线索吗?有人真的尝试过g++ -mx32吗?也许它甚至不支持RH平台…谢谢!

注:为了让"-m32"选项工作,我必须安装:

yum install glibc-devel.i686 libgcc.i686 libstdc++-devel.i686 ncurses-devel.i686

这个失败了(yum找不到这些rpm) -据说这些是-mx32工作所必需的:

yum install gcc-multilib g++-multilib

:

Multilib确实是你的答案,但不知道为什么你的repo不支持它。我是通过apt-get:

安装的
sudo apt-get install gcc-multilib

虽然它使用64位指令,但它使用32位ABI,因此令人恼火的是它不能在WSL (Windows Linux子系统)下运行,WSL只支持64位指令。