У меня есть приложение, которое должно быть скомпилировано как 32-битное на моем 64-битном CentOS 7. Я использую для этого флаг -m32
.Мне также нужны функции из c ++ 17, поэтому я хотел установить gcc 8.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 нет вообще.Я попробовал несколько вещей, но, похоже, ничего не работает.
Я начал задаваться вопросом, возможно ли вообще то, что я пытаюсь сделать.
Михал