LINUX.ORG.RU

Можно ли как-нибудь избавиться от зависимости от новой версии glibc?


0

3

Суть такова: есть некая программа, которая собирается на вполне себе свежей системе. Но есть желание запускать собранный бинарник на относительно старых системах (Debian Stable, например ^_^), не пересобирая его. Проблема в том, что на старой системе требуется более свежая версия glibc: на собирающей машине glibc-2.17, на тестовой машине с Debian glibc-2.11, при запуске ошибки вида

/lib/libc.so.6: version `GLIBC_2.15' not found (required by /opt/mysoftware/bin/libQtGui.so.4)
/lib/libc.so.6: version `GLIBC_2.14' not found (required by /opt/mysoftware/bin/libQtGui.so.4)

Я пробовал решить эту проблему путём подкладывания к библиотекам программы той glibc, с которой программа собирается; в этом случае ошибка была такая:

error while loading shared libraries: __vdso_gettimeofday: invalid mode for dlopen(): Invalid argument

Если добавить кроме libc.so.6 ещё и ld-2.17.so и пробовать запускать программы (любые) с её помощью, то происходит сегфолт:

$ LD_LIBRARY_PATH=/opt/mysoftware/bin /opt/mysoftware/bin/ld-2.17.so /bin/ls
Segmentation fault

Вопрос: можно ли как-то так собрать софтину на новой системе, чтобы она запускалась на старой системе? Про вариант «собрать пакет на старой системе» я знаю, но желательно обойтись без этого.

★★★★★

Традиционно не одобряемый, но простой вариант: вконпелять нужную glibc статически.
Но лучше разберись с ″путем подкладывания″, ты явно что-то делаешь не так.

cx ★★ ()
Ответ на: комментарий от cx

Путь подкладывания очень простой: прога запускается через wrapper, который устанавливает LD_LIBRARY_PATH ко всем необходимым библиотекам, glibc в том числе.

tiandrey ★★★★★ ()

Хотя, кажется, всё оказалось гораздо проще. Кроме libc.so и ld.so нужно положить хотя бы libdl.so и librt.so, а вообще не помешают и остальные библиотеки из пакета glibc.

tiandrey ★★★★★ ()

Берёшь crosstool-ng, собираешь тулчейн с нужной тебе версией gcc и glibc и собираешься этим тулчейном.

DELIRIUM ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.