วิธีการเปิดใช้งานความเข้ากันได้ไบนารีแบบ 32 บิตบน Linux Mint 11 x64


8

ฉันเพิ่งติดตั้ง x64 Linux Mint 11 โดยทั่วไป Ubuntu Natty ตั้งแต่การติดตั้งฉันพบว่าแอปพลิเคชัน 32 บิตที่ใช้ในระบบ Ubuntu ของฉันถูกปฏิเสธโดยระบบ Mint 11 ของฉัน เมื่อฉันใช้ยูทิลิตี้ 'file' เพื่อตรวจสอบไบนารีมันระบุอย่างถูกต้องว่าเป็นเอลฟ์แบบ 32 บิต แต่ฉันไม่สามารถเรียกใช้แอปพลิเคชันได้

ฉันได้ลองเริ่มจาก bash และ os.system a la python ไปจนไม่มีประโยชน์ดังนั้นฉันสงสัยว่ามันต้องมีบางอย่างที่ต้องทำด้วยโหมดความเข้ากันได้ไบนารีแบบ 32- บิต แต่ฉันรู้เกี่ยวกับระบบย่อยนั้นและวิธีการเปิดใช้งาน มีข้อ จำกัด ใครสามารถช่วยได้บ้าง

ขอบคุณ


+1 ขอขอบคุณ ฉันเพิ่งเปลี่ยนจาก natty เป็น Mint เช่นกัน!
Alain Pannetier

คำตอบ:


5

ติดตั้ง ia32-libs และตรวจสอบให้แน่ใจว่าไฟล์แอปพลิเคชันถูกทำเครื่องหมายว่าสามารถใช้งานได้ซึ่งควรทำหน้าที่! :)

แก้ไขล่าช้า:

lib อาจเรียกได้ว่า ia32-libs-multiarch แทน ia32-libs
apt-get install ia32-libs-multiarch


ยอดเยี่ยมที่ทำงานได้อย่างสมบูรณ์ขอบคุณ! ฉันไม่แน่ใจเล็กน้อยว่าทำไมมันถึงใช้งานได้แม้ว่าฉันจะไม่ได้ใช้ libs มาก่อน แต่อย่างน้อย ldd จะมีรายการไฟล์วัตถุที่ใช้ร่วมกันที่ต้องการอย่างน้อย ก่อนที่จะทำการติดตั้ง ia32-libs ldd จะบอกว่าไบนารีนั้นไม่ใช่การปฏิบัติการที่เชื่อมโยงแบบไดนามิกมีซอสลับอื่น ๆ ที่ ia32-libs ใช้เพื่อทำให้แอปแบบ 32 บิตทำงานหรือไม่
Gearoid Murphy

ฉันไม่แน่ใจว่าจะซื่อสัตย์ แต่มันเป็นสิ่งที่ได้ผลสำหรับฉัน! :) (ps ทำเครื่องหมายคำตอบถ้าคุณชอบ!) :)
Ruairi Fullam

น่าสนใจฉันลบ ia32-libs และปฏิบัติการที่ยังทำงานอยู่ (มันเชื่อมโยงแบบสแตติก) หลังจากตรวจสอบผลลัพธ์จาก 'lsmod' อย่างละเอียดยิ่งขึ้นฉันจะเห็นว่ามีโมดูลที่เรียกว่า "binfmt_misc" นี่คือสิ่งที่ฉันอ้างถึง ค่อนข้างแน่ใจว่าเป็นข้อกำหนดหลักสำหรับการสนับสนุนรูปแบบไบนารีอื่นเช่น 32- บิตหรือ COFF exe จาก Windows
Gearoid Murphy

2

ฉันไม่รู้อะไรเกี่ยวกับ MINT แต่ฉันมีประสบการณ์กับ Debian: ในการรัน 32- บิตไบนารีที่คุณต้องการในเกือบทุกกรณีห้องสมุดที่สนับสนุน 32- บิตไบนารีในสภาพแวดล้อม 64 บิต ลอง

apt-get install ia32-libs

หากมีความฉลาดในระบบของคุณ ... (หรือลองความถนัดหรืออะไรก็ตามที่มาพร้อมกับ MINT)

คุณสามารถตรวจสอบไลบรารีที่จำเป็นต้องใช้โดยใช้ldd :

lofi:~# ldd /bin/ping
linux-vdso.so.1 =>  (0x00007ffff7dff000)
libc.so.6 => /lib/libc.so.6 (0x00007fd872ed1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd87323c000)

หากมีห้องสมุดหายไป ldd จะบอกคุณ


เมื่อฉันใช้ ldd บนไบนารี 32 บิตก่อนที่ฉันจะติดตั้ง ia32-libs มันกลับข้อผิดพลาดที่บอกว่าไบนารีไม่ใช่ปฏิบัติการที่เชื่อมโยงแบบไดนามิกฉันรู้ว่ามีเคอร์เนลโมดูลที่สร้างขึ้นเพื่อจัดการกับรูปแบบปฏิบัติการที่แตกต่างกันและฉันคาดการณ์ไว้ นี่คือสิ่งที่จำเป็นต้องกำหนดค่าเพื่อเปิดใช้งานความเข้ากันได้ไบนารีแบบ 32 บิต
Gearoid Murphy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.