Glibc и uClibc бок о бок в одной системе - PullRequest
4 голосов
/ 05 ноября 2010

Возможно ли, чтобы приложения на базе glibc и uClibc работали параллельно в одной системе?

Справочная информация: У нас есть двоичный кросс-компилятор на основе gcc, настроенный для связи с uClibc. У нас есть кросс-скомпилированный glibc. Теперь мы хотим создать некоторые приложения, чтобы они связывались с glibc, а не с uClibc. Мы не хотим перестраивать компилятор.

Ответы [ 3 ]

4 голосов
/ 05 ноября 2010

Нет проблем с glibc и uClibc, живущими бок о бок с некоторыми программами, связанными с одной и другими программами, связанными с другой. Однако существует проблема с дополнительными библиотеками. Каждая разделяемая библиотека в вашей системе будет построена с использованием либо glibc, либо uClibc (с использованием соответствующих заголовков, которые определяют отдельные ABI для стандартных функций библиотеки), поэтому, например, если и программе glibc, и программе uClibc нужны ncurses, вам потребуется иметь две версии ncurses и иметь способ гарантировать, что правильная версия для данной программы будет загружена во время выполнения. В качестве альтернативы, вы можете использовать только один набор общих библиотек и использовать статические библиотеки для программ, связанных с другой библиотекой libc, но вам все равно потребуется собрать 2 набора библиотек.

2 голосов
/ 05 ноября 2010

Да, это должно быть вполне возможно, но вам, возможно, придется поиграться с LD_PRELOAD_PATH.Если вы создаете статические ссылки, перейдите на динамические ссылки.

0 голосов
/ 01 июля 2013

Практически невозможно смешивать их в одном и том же FHS, так как ABI и include dir несовместимы. Однако вы можете установить любой из них по смещению каталога, настроив поле динамического компоновщика в ELF и воспользовавшись функцией sysroot в gcc / binutils. Продолжающийся эксперимент находится в сообществе Gentoo [1], известном как Prefix / libc.

  1. http://wiki.gentoo.org/wiki/Prefix/libc
...