RedHat devtoolset — значение для распространения скомпилированного кода

Я использую CentOS 6.4 и мне нужна более поздняя версия компилятора C ++ для сборки моих инструментов разработки (в данном случае Qt Creator).

Мне неясно, что означает использование devtools, и я надеюсь, что кто-нибудь сможет объяснить.

  1. Если я компилирую программы, используя devtools, означает ли это, что исполняемый файл будет работать на других установках Centos 6.4 без изменений?
  2. Или … я знаю, нужно ли отправлять библиотеки или другие файлы с моими скомпилированными программами?
  3. Если это так … я должен изменить свой код C ++ для ссылки на более поздние библиотеки? или это кто-то сделал человеком, устанавливающим мою скомпилированную программу

4

Решение

Я надеюсь, что этот несколько поздний ответ все еще может помочь вам. Я обнаружил, что при компиляции моего проекта devtoolset (1.1 в моем случае, но это не должно иметь большого значения) на RHEL 6.4 создает двоичные файлы, которые могут почти работать на стандартном RedHat EL 6.4 (должно быть похоже на Centos 6.4).

Единственная проблема, с которой я столкнулся, была компиляция моего проекта с -std=c++11, что вызвало некоторые проблемы из-за несовместимых символов. Причина в том, что ребята из GCC сочли эти части стандартной библиотеки экспериментальными в GCC 4.4, поэтому в некоторых местах они нарушили совместимость с ABI.

Оказывается, есть легко исправить: Свяжите ваши программы с дополнительным аргументом командной строки -static-libstdc++, Таким образом, двоичный файл становится немного больше, но работает на немодифицированном RHEL 6.4 без установки дополнительных библиотек / обновлений для devtoolset,

Чтобы ответить на ваши вопросы явно:

  1. Да почти.
  2. Нет.
  3. Не меняйте код, просто добавьте -static-libstdc++ при связывании.
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]