Как скомпилировать приложение для работы на нескольких версиях Glibc

Как я могу скомпилировать приложение для работы на всех версиях 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

Спасибо!

3

Решение

Самый простой способ — собрать машину с самым старым glibc из тех, которые вы собираетесь поддерживать. На Linux-машинах вы можете даже выполнить полную установку и перенести ее в chrootсреда на вашем компьютере: нет нужды понижать ваш на рабочем месте.

Буду рад увидеть более удобное решение в других ответах (если оно будет более удобный действительно: все, что связано с перестройкой GCC, не соответствует требованиям, ИМХО).

2

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

Я не эксперт, но мне приходит в голову, что, если приложение должно работать с glibc 2.5, оно должно ограничиваться функциями, доступными в 2.5, и ничего после этого. Другими словами, ограничивайте использование функций, представленных в версии 2.6 или новее. Это поможет?

если ты действительно нужны функции из Glibc 2.7, а затем сделать его явное требование для целевых систем. Вы можете поместить некоторый код, чтобы проверить версию glibc системы, на которой он работает, и, если доступная версия ниже требуемой версии, распечатайте / зарегистрируйте исчерпывающее сообщение и корректно выйдите.

Однако, если вы хотите использовать свою сеть в целом, т.е. планируете запускать ваше приложение на широком спектре систем, то использование более низкой версии (как показано в пункте 1) может оказаться более плодотворным.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector