Cách cập nhật glibc lên 2,14 trong CentOS 6.5


47

Tôi muốn cài đặt Android NDK trên máy CentOS 6.5 của mình. Nhưng khi tôi chạy chương trình, nó nói rằng nó cần glibc 2.14 để có thể chạy. CentOS 6.5 của tôi chỉ có Glibc 2.12 được cài đặt. Vì vậy, tôi đã cố gắng cập nhật glibc bằng cách:

$ sudo yum update glibc

Nhưng sau đó tôi thấy phiên bản glibc vẫn là 2.12 chứ không phải 2.14.

$ ldd --version
ldd (GNU libc) 2.12

Tôi nghĩ rằng glibc 2.14 có thể không có sẵn trên kho của CentOS. Vậy làm cách nào để cập nhật nó lên glibc 2.14 trên CentOS 6.5?


2
Nâng cấp lên CentOS7 dễ dàng hơn với GLibC 2.14 so với nâng cấp GLibC từ 2.12 lên 2.14. Xem Trình ghi cuộc gọi Skype
Eyoung100

@ eyoung100 Tôi vẫn cần CentOS 6.5 chứ không phải 7. Có cách nào dễ dàng để nâng cấp Glibc lên 2.14 không? Cám ơn!
tonga


Dựa trên câu trả lời của bạn, có vẻ như giải pháp tốt nhất sẽ là nâng cấp lên CentOS 7 hoặc sử dụng phiên bản NDK cũ hơn yêu cầu glibc 2.12. Cảm ơn ý kiến ​​của bạn.
tonga

1
Bạn cũng có thể cài đặt một chroot CentOS7 để chạy NDK.
derobert

Câu trả lời:


68

Bạn không thể cập nhật glibctrên Centos 6một cách an toàn. Tuy nhiên bạn có thể cài đặt 2.14bên cạnh 2.12một cách dễ dàng, sau đó sử dụng nó để biên dịch các dự án vv Đây là cách:

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
Muốn đề cập, quá trình builing đó mất 2,5 giờ trên AWS chậm. Có lẽ hữu ích cho một ai đó các thông tin tiếp theo: hướng dẫn ở trên sửa chữa psycopg2vấn đề ImportError: /lib/libc.so.6: version 'GLIBC_2.14'(tôi sử dụng CentOS 6.5 và PostgreSQL v 9.6)
TitanFighter

1
Câu trả lời rực rỡ! Tôi đã làm theo câu trả lời này một cách chính xác và nó hoạt động như một lá bùa. Cảm ơn bạn
nối

2
Cũng có thể được sử dụng cho các phiên bản sau; chỉ cần thay đổi "2.14" thành "2.23" hoặc bất kỳ phiên bản nào bạn cần, như được tô sáng bởi những thứ như: /usr/local/lib/somlelib.so: undefined reference to 'somefunction@GLIBC_2.23'(một vài chữ số cuối cùng là phiên bản). Để làm cho quá trình biên dịch nhanh hơn, hãy sử dụng make -j8 nếu bạn có 8 luồng trên cpu của mình, v.v ... Hoàn thành trong vài phút.
Roel Van de Paar

Tôi sẽ rời đi 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 referencesau giai đoạn xuất khẩu (khi thử bất kỳ lệnh nào). Có ai giúp được không? @Roel
belka

1
Cảm ơn người đàn ông, làm việc như mong đợi CENTOS 6.10. Tôi thay thế dòng này sudo make installvới make installkhi tôi đã root, vì người dùng của tôi là không trong file sudoers
Kế toán م

7

Để cài đặt song song glibc 2.14, hãy thêm tiền tố cấu hình:

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

Theo quy trình này, bạn sẽ có thể xây dựng 2.14 nhưng bạn sẽ cần cho trình biên dịch biết nơi tìm glibc.

Dưới đây là những cách bạn có thể đưa glibc vào chương trình của bạn.

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

    xuất LD_LIBRARY_PATH.

    Thư viện được hiển thị trong phiên đăng nhập hiện tại của bạn.

  2. Bạn có thể liên kết vĩnh viễn phiên bản glibc mới của mình như vậy, nhưng vui lòng đọc CẢNH BÁO bên dưới:

    ln -sf /opt/glibc-2,14/glibc-2,14.so /lib/libc.so.6.

Vì libc.so.6 chỉ là một liên kết tượng trưng. Thực hiện lệnh trên sẽ làm cho điểm liên kết hướng tới thư viện glibc mới. Tuy nhiên, bước này không được khuyến nghị vì có nhiều chương trình trong Linux phụ thuộc vào các phiên bản cũ hơn và sẽ ngừng hoạt động.


+1 để biết chi tiết về việc lộ thư viện
Kế toán م

2

Kỹ thuật thay thế phổ biến. Cài đặt song song GLIBC 2.14 (Đặt nó vào thư mục / opt) Sau đó, nó có sẵn cho các chương trình yêu cầu mà không phá vỡ hệ điều hành lõi của bạn.


7
Bạn sẽ làm điều này như thế nào? Tải về một vòng / phút và?
rncrtr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.