ฉันมีกล่อง Ubuntu Linux 64 บิต เมื่อเร็ว ๆ นี้ฉันได้รับไบนารีคอมไพล์เก่าที่เคยใช้กับเซิร์ฟเวอร์เก่าที่เลิกใช้แล้วซึ่งฉันคิดว่าเป็นการแจกจ่าย Redhat ยุค 2007
อย่างที่คุณคาดไว้ไบนารีไม่ทำงานเนื่องจากความไม่เข้ากันของไลบรารี ไบนารีเท่านั้นที่ดูดและไม่ได้หมายความว่าเป็นแบบพกพา ถึงกระนั้นฉันยังคงติดอยู่กับเพียงไบนารีและจำเป็นต้องเรียกใช้ ดังนั้นคำถามของฉันจะกลายเป็นวิธีการจัดการกับปัญหา (เจ็บปวด) ของการหาสิ่งที่ห้องสมุดคาดหวังไบนารีการค้นหาห้องสมุดเหล่านั้นและบังคับให้โปรแกรมใช้พวกเขา กลยุทธ์ที่เหมาะสมในการทำสิ่งนี้คืออะไร?
ฉันจะให้คุณตัวอย่างที่เฉพาะเจาะจงของไบนารีของฉันซึ่งทำงาน แต่ล้มเหลวทันทีด้วยข้อผิดพลาด
datab2txt: relocation error: /lib64/libnss_files.so.2: symbol __rawmemchr, version GLIBC_2.2.5 not defined in file libc.so.6 with link time reference
ฉันสนใจในกลยุทธ์ในการวิเคราะห์ปัญหานี้เนื่องจากฉันคาดหวังว่าหากฉันแก้ปัญหานี้ (โดยการค้นหา glibc เวอร์ชันเก่า) อาจมีไลบรารีที่จะแก้ไขได้อีก
กลยุทธ์ที่ดีที่สุดในการแก้ไขปัญหานี้คืออะไร ฉันคาดเดาว่าฉันจำเป็นต้องระบุไลบรารีที่ต้องการ (อย่างไร?) ค้นหาพวกเขาและบังคับให้โปรแกรมใช้พวกเขา (จะเป็นอย่างไรแทนที่ LD_LIBRARY_PATH?)
ขอบคุณ!
แก้ไข: ใช้ให้เกิดข้อผิดพลาดldd datab2txt
not a dynamic executable
เอ่อ .. หมายความว่าไง?
นอกจากนี้ฉันเรียกใช้ไฟล์และรับ:
% file datab2txt
datab2txt: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.4.0, not stripped