как установить glibc 2.3.2 на Gentoo?

Я написал приложение, и мне нужно запустить его в Gentoo, но когда я пытаюсь запустить его, я получаю следующее сообщение:

/lib/libc.so.6: версия `GLIBC_2.3.4 'не найдена (требуется /usr/local/myapp/lib/myapplib.so.1)

текущая версия GLIBC в этом gentoo - 2.3.2.

Я не могу обновить этот glibc, потому что у меня нет разрешения, поэтому мне нужно «понизить» мой glibc до той же версии (2.3.2) ... как я могу это сделать?

спасибо,


person Dayvid Oliveira    schedule 07.04.2011    source источник
comment
Вы можете сделать это вручную или с помощью диспетчера пакетов вашего дистрибутива. Я вам не рекомендую. См. Ответ от mattst88.   -  person Ярослав Рахматуллин    schedule 24.02.2012


Ответы (2)


Проблема "/lib/libc.so.6: версия` GLIBC_2.3.4 'не найдена "возникает из-за попытки запустить двоичный файл, скомпилированный для более новой glibc, в системе со старой версией glibc. По этой причине настоятельно не рекомендуется переходить на более раннюю версию glibc.

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

person mattst88    schedule 24.05.2011
comment
Это правильный ответ (привет, мат!). Похоже, вы скомпилировали двоичный файл в другой системе для более новой системы glibc, а затем попытались запустить его на компьютере с Gentoo, на котором установлена ​​более ранняя версия glibc. Вы можете избежать этого в некоторых бинарных дистрибутивах, если они находятся в одной и той же ревизии glibc. Но вам будет действительно сложно перейти на совершенно другой дистрибутив, особенно такой, как Gentoo, в котором каждая система буквально уникальна, без перекомпиляции исходного кода. Если вы правильно построили свой Makefile, просто перезапустите configure, а затем make, и все будет готово. - person Kumba; 31.05.2011

Я на самом деле борюсь с той же проблемой, так что, возможно, у меня есть какая-то информация, которая может помочь.

Короче говоря, ваш двоичный файл был скомпилирован для поиска libc.so.6. GLIBC_2.3.4 находится в libc.so.5. Насколько мне известно, если вы понизите версию glibc на своей машине разработчика, некоторые из ваших других программ могут работать некорректно (потому что они были скомпилированы для поиска текущей версии). Каким-то образом у CentOS / RHEL есть пакет compat-glibc, который может работать вместе с текущим glibc, не вызывая этой ошибки. Если ваш блок разработчика использует CentOS / RHEL, установите этот пакет / перекомпилируйте, и все будет в порядке. Возможно, вам придется использовать более старый компилятор, чтобы он мог искать старую библиотеку. Если вы не разрабатываете CentOS / RHEL, продолжайте.

Мой план атаки сегодня - собрать glibc из исходников. Это означает использование компилятора, выпущенного примерно в то же время, что и более старая версия glibc. Вы можете столкнуться с некоторыми препятствиями (такими как необходимость в более старой версии builddutils и т. Д.), Но я надеюсь, что когда libc.so.5 будет скомпилирован и установлен в / usr / local / lib, мое приложение обнаружит, что до него находит libc.so.6 в / lib.

Итак, вот оно. Это не для слабонервных, и это определенно не быстрое решение. Сегодня я планирую протестировать это, поэтому не могу сказать, что это правильное решение. Пожалуйста, коллективный разум ... если я категорически не прав, поправьте меня и спасите эту бедную душу от этой извилистой мучительной дороги :-)

РЕДАКТИРОВАТЬ: ссылка на источники glibc

person Joe    schedule 08.04.2011