我有一个需要在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ł
答案 0 :(得分:0)
不幸的是,我发现在CentOS上没有包含用于32位版本的gcc> 8的gcc std库的软件包。
我的docker映像需要此文件,但由于无法做到这一点,我切换到ubuntu i386 16.04,该文件可以非常轻松地安装gcc 8.2。