Можно ли скомпилировать 32-битную цель на CentOS 7 с gcc> = 8? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть приложение, которое должно быть скомпилировано как 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 нет вообще.Я попробовал несколько вещей, но, похоже, ничего не работает.

Я начал задаваться вопросом, возможно ли вообще то, что я пытаюсь сделать.

Михал

1 Ответ

0 голосов
/ 29 марта 2019

К сожалению, я обнаружил, что в CentOS нет пакета, который включал бы библиотеки gcc std для 32-битной версии gcc> 8.

Мне нужно было это для моего образа докера, но я не смог этого сделать и переключился на ubuntu i386 16.04, который позволяет очень легко установить gcc 8.2.

...