Как я могу скомпилировать приложение для работы на всех версиях 2.X Glibc? Теперь я компилирую на машине с версией 2.7 GLibc, но когда я запускаю приложение, где версия glibc 2.5, у меня появляется ошибка:
./server: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by ./server)
Как я могу скомпилировать приложение, которое будет работать на всех версиях 2.X?
Команда компиляции:
g++ -o newserver test.cpp ... -lboost_system -lboost_thread -std=c++0x
Спасибо!
Самый простой способ — собрать машину с самым старым glibc из тех, которые вы собираетесь поддерживать. На Linux-машинах вы можете даже выполнить полную установку и перенести ее в chroot
среда на вашем компьютере: нет нужды понижать ваш на рабочем месте.
Буду рад увидеть более удобное решение в других ответах (если оно будет более удобный действительно: все, что связано с перестройкой GCC, не соответствует требованиям, ИМХО).
Я не эксперт, но мне приходит в голову, что, если приложение должно работать с glibc 2.5, оно должно ограничиваться функциями, доступными в 2.5, и ничего после этого. Другими словами, ограничивайте использование функций, представленных в версии 2.6 или новее. Это поможет?
если ты действительно нужны функции из Glibc 2.7, а затем сделать его явное требование для целевых систем. Вы можете поместить некоторый код, чтобы проверить версию glibc системы, на которой он работает, и, если доступная версия ниже требуемой версии, распечатайте / зарегистрируйте исчерпывающее сообщение и корректно выйдите.
Однако, если вы хотите использовать свою сеть в целом, т.е. планируете запускать ваше приложение на широком спектре систем, то использование более низкой версии (как показано в пункте 1) может оказаться более плодотворным.