Узкая версия вопроса: проблема в том, что я разрабатываю приложения на C ++, работаю на ноутбуке (Fedora 29) с GNU libc 2.28, GCC версии 8.3 и моим целевым сервером (RHEL 6.5) это GNU libc 2.12, версия GCC 4.47. Серверы находятся в разных сетях, чем моя среда разработки, из-за проблем с регулированием, поэтому для перемещения файлов между ноутбуком и серверами требуется использование флэш-накопителя и их перемещение вручную.
Если я скомпилировал бинарный файл на своем ноутбуке и развернул его на сервере, я получу ошибки, связанные с различными версиями glibc. Я уверен, что проблем будет больше, поскольку ОС настолько разные, поэтому я просто пишу код на своем ноутбуке, проверяю его компиляцию, а затем компилирую на одном из серверов и распространяю. Все в порядке. Но одна из проблем заключается в том, что некоторые функции c++11
доступны на моем ноутбуке при компиляции c++0x
, но недоступны на сервере, поэтому мне нужно исправить код на сервере, чтобы убедиться, что он компилируется, а затем передать обратно на мой ноутбук, чтобы я мог обновить исходный код. Это очень утомительно.
Я бы хотел довести его до такой степени, чтобы я мог просто скомпилировать двоичные файлы на своем ноутбуке и передать двоичные файлы на серверы или, если это не удалось, просто установить на своем ноутбуке вторую цепочку инструментов, которая отражает то, что включено. сервер. Я собрал RPM-файлы для glibc, gcc, stdlibc ++, gcc-c ++ и нескольких других библиотек, чтобы соответствовать тому, что находится на сервере.
Расширенная версия: Каковы оптимальные методы разработки для целевых систем на C ++ с различными версиями std lib? Это просто установка виртуальной машины целевой системы и выполнение всей моей работы там? Или я могу получить достаточно близко, устанавливая те же самые версии библиотеки рядом? Кажется, что большинство людей уже знают этот материал, и у меня может быть огромный пробел в моих знаниях, есть ли какой-нибудь сжатый справочный материал, на который я мог бы указать, если это так?