是否可以在gcc> = 8的CentOS 7上编译32位目标?

时间:2019-03-21 10:39:45

标签: gcc centos 32-bit

我有一个需要在64位CentOS 7上编译为32位的应用程序。为此,我使用-m32标志。我还需要c ++ 17的功能,因此我想安装gcc8.x。我发现devtoolset 8随附了gcc 8.2.1,对我很有帮助。

应用程序可以正常编译,但链接存在问题-无法找到某些32位库:

[100%] Linking CXX executable cherrySim_runner /opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: cannot find /usr/lib/libstdc++.so.6 /opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: skipping incompatible /opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8/libstdc++_nonshared.a when searching for -lstdc++_nonshared /opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: cannot find -lstdc++_nonshared /opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/ld: cannot find /lib/libgcc_s.so.1

我发现devtoolset准备了一些32位库,但这是指向不存在的路径的链接,例如:/opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8/32/libstdc++_nonshared.a -> ../../../i686-redhat-linux/8/libstdc++_nonshared.a。根本没有/ opt / rh / devtoolset-8 / root / usr / lib / gcc / i686-redhat-linux目录。我尝试了几件事,但似乎无济于事。

我开始怀疑我想做的事情是否完全可能。

Michał

1 个答案:

答案 0 :(得分:0)

不幸的是,我发现在CentOS上没有包含用于32位版本的gcc> 8的gcc std库的软件包。

我的docker映像需要此文件,但由于无法做到这一点,我切换到ubuntu i386 16.04,该文件可以非常轻松地安装gcc 8.2。