วิธีอัปเดต 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 หรือไม่? ขอบคุณ!
tonga

3
ไม่เห็นหนึ่งในคำตอบอื่น ๆ ของฉันทำไม
eyoung100 100

จากคำตอบของคุณดูเหมือนว่าทางออกที่ดีที่สุดจะเป็นการอัพเกรดเป็น CentOS 7 หรือใช้ NDK รุ่นเก่าซึ่งต้องการ glibc 2.12 ขอบคุณสำหรับความคิดเห็นของคุณ
tonga

1
คุณสามารถติดตั้ง CentOS7 chroot เพื่อใช้งาน 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
คำตอบที่ยอดเยี่ยม! ฉันปฏิบัติตามคำตอบนี้อย่างแน่นอนและทำงานได้เหมือนมีเสน่ห์ ขอบคุณ
thonnor

2
ยังสามารถใช้สำหรับรุ่นที่ใหม่กว่า; เพียงเปลี่ยน "2.14" เป็น "2.23" หรือรุ่นใดก็ได้ที่คุณต้องการตามที่ไฮไลต์โดยสิ่งต่าง ๆ เช่น: /usr/local/lib/somlelib.so: undefined reference to 'somefunction@GLIBC_2.23'(ตัวเลขสองสามหลักสุดท้ายเป็นรุ่น) เพื่อทำให้การคอมไพล์เร็วขึ้นให้ใช้ -j8 หากคุณมี 8 เธรดใน cpu ของคุณเป็นต้นการขุดเสร็จในไม่กี่นาที
Roel Van de Paar

ฉันเหลือ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ขณะที่ฉันรูทเพราะผู้ใช้ของฉันไม่ได้อยู่ในไฟล์ 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
คุณจะทำอย่างไร ดาวน์โหลดรอบต่อนาทีและ?
rncrtr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.