Во-первых, для поддержки более поздних стандартов C ++ ваша установка Solaris 10 должна быть обновленной.См. Невозможно включить cmath с использованием GCC 5.5 на Solaris 10 для примера того, почему.Прочитайте комментарии - есть исправления, которые необходимо применить к Solaris 10, чтобы сделать его совместимым с C ++ 11 и, предположительно, C ++ 14.
Как правило, вы не можете скомпилировать в Solaris 11 и запуститьполучившийся двоичный файл в Solaris 10.
Хорошо, вы должны быть в состоянии скомпилировать на Solaris 10 и нормально работать на Solaris 11, так что вам не нужно будет поддерживать две отдельные среды или отправлять две отдельныеСолярис продукты.Вы захотите проверить это с вашими двоичными файлами, но в теории это должно работать - и по моему опыту, это работает .
Я не могу найти более поздние версии (позже, чем5-кое-что) для Solaris 10, так что вам, вероятно, придется загружать собственную версию GCC 7-что-то или позже.См. https://unix.stackexchange.com/questions/446760/how-to-build-a-gcc-4-9-0-successfully-on-solaris-10-sparc для примера построения GCC 4.9.0 на Solaris 10 SPARC.Обратите внимание, что поддержка GCC для Solaris 10, вероятно, скоро прекратится, согласно этой публикации: https://gcc.gnu.org/ml/gcc/2018-10/msg00139.html:
Поэтому я думаю, что пришло время устареть поддержки этой версии в GCC 9, и, следовательно, удалить ее в GCC 10.
Я не собирал GCC на Solaris 10 уже несколько лет, поэтому я не знаю, с чем вы можете столкнуться при создании GCC 7 или 8.
Еще один возможный вариантальтернативой является использование Oracle Developer Studio вместо GCC.Версия 12.6 поддерживает C ++ 14 и доступна как для Solaris 10, так и для 11.
Одно предостережение - как бы вы ни компилировали, вы почти наверняка захотите статически связать оба libgcc
и libstdc++
, особенно еслиВы компилируете свой собственный GCC.