Jak zaktualizować glibc do 2.14 w CentOS 6.5


47

Chcę zainstalować system Android NDK na moim komputerze CentOS 6.5. Ale kiedy uruchomiłem ten program, napisano, że aby móc uruchomić, potrzebuje glibc 2.14. W moim CentOS 6.5 zainstalowano tylko Glibc 2.12. Próbowałem więc zaktualizować glibc poprzez:

$ sudo yum update glibc

Ale potem okazało się, że wersja glibc to wciąż 2.12, a nie 2.14.

$ ldd --version
ldd (GNU libc) 2.12

Myślę, że glibc 2.14 może nie być dostępny w repozytoriach CentOS. Jak mogę go zaktualizować do wersji glibc 2.14 na CentOS 6.5?


2
Łatwiej jest uaktualnić do CentOS7, który zawiera GLibC 2.14, niż uaktualnić GLibC z 2.12 do 2.14. Zobacz Skype Call Recorder
eyoung100,

@ eyoung100 Nadal potrzebuję CentOS 6.5 zamiast 7. Czy istnieje prosty sposób na uaktualnienie Glibc do 2.14? Dzięki!
tonga


Na podstawie twoich odpowiedzi wydaje się, że najlepszym rozwiązaniem będzie aktualizacja do CentOS 7 lub użycie starszej wersji NDK, która wymaga glibc 2.12. Dziękuję za komentarze.
tonga

1
Możesz także zainstalować chroota CentOS7, aby uruchomić NDK.
derobert

Odpowiedzi:


68

Nie można aktualizować glibcna Centos 6bezpiecznie. Możesz jednak łatwo zainstalować 2.14obok 2.12, a następnie użyć go do kompilacji projektów itp. Oto jak:

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
Chciałbym wspomnieć, że proces budowania trwa 2,5 godziny na wolnym AWS. Może przyda się komuś następna informacja: powyższa instrukcja rozwiązuje psycopg2problem ImportError: /lib/libc.so.6: version 'GLIBC_2.14'(korzystam z Centos 6.5 i PostgreSQL v 9.6)
TitanFighter

1
Genialna odpowiedź! Dokładnie zastosowałem się do tej odpowiedzi i zadziałało to jak urok. Dziękuję
Thonnor,

2
Może być również używany w późniejszych wersjach; po prostu zmień „2.14” na „2.23” lub dowolną potrzebną wersję, co zostało podkreślone przez: /usr/local/lib/somlelib.so: undefined reference to 'somefunction@GLIBC_2.23'(kilka ostatnich cyfr to wersja). Aby przyspieszyć kompilację, użyj make -j8, jeśli masz 8 wątków na procesorze itp. Mój został ukończony w ciągu kilku minut.
Roel Van de Paar,

Pozostaje mi 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 referencepo fazie eksportu (przy próbie wykonania dowolnego polecenia). Czy ktoś może pomóc? @Roel
belka

1
Dzięki stary, pracował zgodnie z oczekiwaniami CENTOS 6.10. Wymieniłem tę linię sudo make installze make installgdy byłem korzeń, bo mój użytkownik nie był w pliku sudoers
Accountant م

7

Aby zainstalować glibc 2.14 równolegle, dodaj prefiks konfiguracji:

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

Po zakończeniu tego procesu będziesz mógł zbudować 2.14, ale będziesz musiał powiedzieć kompilatorowi, gdzie ma szukać glibc.

Poniżej znajdują się sposoby na ujawnienie glibc w twoim programie.

  1. LD_LIBRARY_PATH = / opt / glibc-2.14 / lib

    eksportuj LD_LIBRARY_PATH.

    Biblioteka jest widoczna podczas bieżącej sesji logowania.

  2. Możesz na stałe połączyć swoją nową wersję glibc, ale przeczytaj OSTRZEŻENIE poniżej:

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

Ponieważ libc.so.6 jest tylko dowiązaniem symbolicznym. Wykonanie powyższego polecenia spowoduje, że link będzie wskazywał nową bibliotekę glibc. Jednak ten krok nie jest zalecany, ponieważ istnieje wiele programów w systemie Linux, które zależą od starszych wersji i przestają działać.


+1 za szczegóły ujawnienia biblioteki
Księgowy م

2

Wspólna technika alternatywna. Równoległe instalowanie GLIBC 2.14 (Zainstaluj go w katalogu / opt) Następnie jest dostępny dla programów, które go wymagają, bez uszkodzenia podstawowego systemu operacyjnego.


7
Jak byś to zrobił? Pobierz RPM i?
rncrtr
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.