Как подключить библиотеку libc к файлу .so или решить проблему с отсутствующей libc на другой машине?

Как создать разделяемую библиотеку, которая будет работать на других машинах без ошибки «version `GLIBC_2.32' not found»?
  • 26 марта 2024 г. 9:49
Ответы на вопрос 2
Для подключения библиотеки libc к файлу .so или решения проблемы с отсутствующей libc на другой машине, можно воспользоваться статической компиляцией. Это означает, что все необходимые библиотеки будут включены непосредственно в исполняемый файл или .so, и не будут зависеть от установленных библиотек на другой машине.

Чтобы создать разделяемую библиотеку, которая будет работать на других машинах без ошибки «version `GLIBC_2.32' not found», можно воспользоватся кросс-компиляцией. Это означает, что библиотека будет скомпилирована для целевой платформы, учитывая версию libc на этой платформе.

Для этого нужно установить необходимые пакеты для кросс-компиляции, например, gcc для целевой платформы, установить необходимые библиотеки и передать опции компиляции для указания целевой платформы. После этого библиотека должна быть скомпилирована с использованием этих опций, чтобы гарантировать совместимость на других машинах.

Таким образом, следует учитывать версию libc на целевой машине и провести компиляцию с учетом этой версии, чтобы избежать ошибок при выполнении программы на другой машине.
Компилируйте вашу библиотеку на самом старом дистрибутиве (а точнее, используйте заголовочные файлы и линкуйте с самой старой glibc), которую собираетесь поддерживать. 

CentOS 6 покроет все дистрибутивы за последние 10 лет.

Можно также попробовать различные хаки, подменяющие заголовочные файлы от старых версий glibc, для использования символов старших версий.

См.
Похожие вопросы