Как обновить glibc до 2.14 в CentOS 6.5


47

Я хочу установить Android NDK на мою машину CentOS 6.5. Но когда я запускаю программу, она говорит, что для запуска ей нужен glibc 2.14. На моем CentOS 6.5 установлен только Glibc 2.12. Поэтому я попытался обновить glibc:

$ sudo yum update glibc

Но после этого я обнаружил, что версия glibc по-прежнему 2.12, а не 2.14.

$ ldd --version
ldd (GNU libc) 2.12

Я думаю, что glibc 2.14 может быть недоступен в репозиториях CentOS. Так как я могу обновить его до glibc 2.14 на CentOS 6.5?


2
Проще обновить до CentOS7, который содержит GLibC 2.14, чем обновить GLibC с 2.12 до 2.14. Смотрите Skype Call Recorder
eyoung100

@ eyoung100 Мне все еще нужен CentOS 6.5, а не 7. Есть ли простой способ обновить Glibc до 2.14? Спасибо!
Тонга


Судя по вашим ответам, кажется, что лучшим решением будет либо обновление до CentOS 7, либо использование более старой версии NDK, для которой требуется glibc 2.12. Спасибо за ваши комментарии.
Тонга

1
Вы также можете установить chroot CentOS7 для запуска NDK.
derobert

Ответы:


68

Вы не можете обновить glibcна Centos 6безопасно. Однако вы можете легко установить его 2.14вместе 2.12, а затем использовать для компиляции проектов и т. Д. Вот как это сделать:

mkdir ~/glibc_install; cd ~/glibc_install 

wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

tar zxvf glibc-2.14.tar.gz

cd glibc-2.14

mkdir build

cd build

../configure --prefix=/opt/glibc-2.14

make -j4

sudo make install

export LD_LIBRARY_PATH="/opt/glibc-2.14/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

3
Хочу отметить, что на медленном AWS процесс сборки занимает 2,5 часа. Может быть, кому-то пригодится следующая информация: инструкция выше решает psycopg2проблему ImportError: /lib/libc.so.6: version 'GLIBC_2.14'(я использую Centos 6.5 и PostgreSQL v 9.6)
TitanFighter

1
Блестящий ответ! Я точно следовал этому ответу, и он работал как шарм. Спасибо
Тоннор

2
Может также использоваться для более поздних версий; просто измените «2.14» на «2.23» или любую другую версию, которая вам нужна, как это выделено такими вещами, как: /usr/local/lib/somlelib.so: undefined reference to 'somefunction@GLIBC_2.23'(последние несколько цифр - версия). Чтобы ускорить компиляцию, используйте make -j8, если у вас 8 потоков на вашем процессоре и т. Д. Мой процесс завершен за несколько минут.
Роэль Ван де Паар

У меня осталось relocation error: libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time referenceпосле фазы экспорта (при попытке любой команды). Кто-нибудь может помочь? @Roel
Belka

1
Спасибо мужик, сработал как положено CENTOS 6.10. Я заменил эту строку sudo make installна make installпока я был root, потому что моего пользователя не было в файле sudoers
Бухгалтер م

7

Чтобы установить glibc 2.14 параллельно, добавьте префикс конфигурации:

tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install

Следуя этому процессу, вы сможете собрать 2.14, но вам нужно будет указать компилятору, где искать glibc.

Ниже приведены способы, которыми вы можете предоставить glibc вашей программе.

  1. LD_LIBRARY_PATH = / опт / Glibc-2,14 / Библиотека

    экспортировать LD_LIBRARY_PATH.

    Библиотека выставляется во время вашего текущего сеанса входа.

  2. Вы можете навсегда связать свою новую версию glibc следующим образом, но, пожалуйста, прочитайте ПРЕДУПРЕЖДЕНИЕ ниже:

    ln -sf /opt/glibc-2.14/glibc-2.14.so /lib/libc.so.6.

С libc.so.6 это просто символическая ссылка. Выполнение вышеуказанной команды создаст ссылку на новую библиотеку glibc. Однако этот шаг не рекомендуется, поскольку в Linux существует много программ, которые зависят от старых версий и перестают работать.


+1 за детали разоблачения библиотеки
Бухгалтер م

2

Общая альтернативная техника. Параллельная установка GLIBC 2.14 (вставьте его в каталог / opt). Затем он становится доступным для программ, которым это требуется, без нарушения вашей основной ОС.


7
Как бы вы это сделали? Скачать RPM и?
rncrtr
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.