Могу ли я использовать более старый linux с более новым gcc / clang? С++

прямо сейчас я компилирую свое программное обеспечение C++ на определенной старой версии linux (SLED 10), используя предоставленный gcc, и он может работать на большинстве более новых версий, поскольку у них есть более новый glibc. Проблема в том, что старый gcc не поддерживает C++11, и я бы очень хотел использовать новые функции.

теперь у меня есть некоторые идеи, но я уверен, что другие имеют такую же потребность. Что на самом деле сработало для тебя?

мысли:

  1. Построьте на более новой системе, статической ссылке к более новому glibc. (Не возможно, да?)
  2. сборка на более новой системе, компиляция и ссылка на более старый glibc.
  3. сборка на старой системе с использованием обновленного gcc, ссылка против старого glibc.
  4. Построьте на более новой системе, динамической ссылке к более новому glibc, установите RPath и обеспечьте наше glibc с установщиком.

в качестве бонуса мое программное обеспечение также поддерживает плагины и имеет SDK. Я бы предпочел, чтобы мои клиенты могли компилироваться против моих библиотек без огромного перебранка.

спасибо заранее. Идеи приветствуются,предпочитаемые проверенные решения.

1 ответов


сборка с новым gcc. Установите новый компилятор на старой машине или comile на новой машине и установите необходимые динамические библиотеки на старой машине.

обратите внимание, что несколько версий libc (а также libstdc++) поддерживаются на одной машине, поскольку они обычно версионные (т. е. libc.Итак.5, libc.Итак.6, etc)