Як оновити 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
Хочемо зазначити, що процес збирання займає 2,5 години на повільних AWS. Можливо, комусь корисна наступна інформація: інструкція над 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 = / opt / glibc-2.14 / lib

    експорт 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.