Как обновить 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.