วิธีการติดตั้ง ia32-libs ใน Ubuntu 14.04 LTS (Trusty Tahr)


115

ฉันติดตั้ง Ubuntu 14.04 (Trusty Tahr) เมื่อวานนี้ ทุกอย่างดูเหมือนจะโอเค แต่เมื่อฉันพยายามรวบรวมรหัส C ฉันพบข้อผิดพลาดต่อไปนี้ ข้อผิดพลาดน่าจะเกิดจากระบบปฏิบัติการไม่มีการรองรับสถาปัตยกรรม 32 บิต ผลลัพธ์ข้อผิดพลาดมีดังต่อไปนี้:

/usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_debug.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_str.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_cfg_common.o)' is incompatible with i386:x86-64 output

ฉันเคยใช้apt-get install ia32-libsเมื่อฉันใช้ Ubuntu 12.04 (Pangolin ที่แม่นยำ) แต่สิ่งที่ฉันรู้ก็คือ Ubuntu ได้ลบ ia32-libs ตั้งแต่ Ubuntu 13.10 (Saucy Salamander) ฉันจะแก้ไขปัญหานี้ได้อย่างไร?


ตรวจสอบข้อมูล multiarch สำหรับ Ubuntu คุณสามารถต่อท้าย: i386 เข้ากับชื่อแพ็กเกจเพื่อติดตั้งเวอร์ชัน 32 บิต
TeTeT

1
ฉันมีปัญหานี้อย่างแน่นอนฉันต้องการ ia32-libs สำหรับการเรียกใช้ไคลเอนต์ fortinet vpn มันทำงานได้อย่างสมบูรณ์ภายใต้ 10.04 LTS และ 12.04 LTS ฉันลอง 'sudo apt-get install ia32-libs: i386' แล้ว แต่ไม่ได้ผลฉันได้ติดตั้งแพ็คเกจ 'lib32z1 lib32ncurses5 lib32bz2-1.0' แล้วด้วย แต่ไม่ได้ผล
javaPhobic

@javaPhobic ฉันตัดสินใจติดตั้ง ubuntu12.04 (32bit) เกี่ยวกับคำถามของฉันฉันมีคำตอบ พวกเขาไม่ใช่กุญแจของฉัน แต่อาจให้ความช่วยเหลือคุณได้ 1. คุณสามารถลองทำความสะอาดแล้วสร้างรหัสของคุณอีกครั้ง 2. คุณสามารถลองติดตั้ง ia32-libs ทั้งหมดได้เช่นเดียวกับคำตอบของ Mike Tang 3. คุณสามารถพยายามที่จะเพิ่ม `` -m32` gcc -m32 helloworld.cเมื่อคุณล้อมรหัสของคุณตัวอย่างเช่น: โชคดี.
andycoder

นี่ควรจะเป็นความผิดพลาดของเซิร์ฟเวอร์จริงๆ
AStopher

2
ฉันโหวตให้ปิดคำถามนี้เป็นนอกประเด็นเพราะเป็นเรื่องเกี่ยวกับตำแหน่งของไลบรารีสำหรับ linux ในขณะที่สัมผัสกันเกี่ยวกับการเขียนโปรแกรมโซลูชันจะเป็นคำตอบเกี่ยวกับการกำหนดค่า linux มากกว่าไม่ใช่คำตอบในการเขียนโปรแกรม
BradleyDotNET

คำตอบ:


140

คุณสามารถลองสิ่งนี้เพื่อติดตั้งไลบรารี 32 บิต (ไม่ใช่ทั้งหมดใน ia32-libs):

sudo  apt-get install program:i386

sudo dpkg --add-architecture i386 อาจจำเป็น (ถ้าคุณไม่เคยใช้งาน)


หรือหากคุณต้องการติดตั้ง ia32-lib ทั้งหมดแทนให้ลองทำตามลำดับต่อไปนี้:

sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs

PS: ia32-libsวิธีนี้คุณสามารถติดตั้ง อย่างไรก็ตามเราเพิ่มแหล่งที่มาของ 13.04 แทนดังนั้นอาจมีปัญหาที่ไม่ทราบสาเหตุ หลังจากติดตั้งia32-libsผมแนะนำให้คุณเอาia32-libs-raring.listในและทำ/etc/apt/sources.list.dsudo apt-get update


หากคุณต้องการแก้ไขการขึ้นต่อกันของ Android SDK คุณสามารถลองดังต่อไปนี้:

sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1


3
E: Package 'ia32-libs' ไม่มีตัวเลือกการติดตั้ง
ThatAintWorking

2
ฉันไม่สามารถเข้าถึง archive.ubuntu.com จำนวนมากไม่พบapt-get updateในขณะที่ ดังนั้นฉันจึงเปลี่ยนแหล่งที่มาของแพ็กเกจเป็น deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse. ตอนนี้ใช้งานได้แล้ว
Tim Wu

3
Raring archive ไม่มีอยู่ในไฟล์เก็บถาวรของ Ubuntu อีกต่อไป ฉันเปลี่ยนไฟล์เก็บถาวร raring สำหรับไฟล์เก็บถาวรที่แม่นยำ แพ็คเกจ ia32-libs จะติดตั้งทันที
Martijn Burger

ไม่ทำงานบน 14.04 ทางออกที่เหมาะกับฉันคือคำตอบของ Aleksei
joelparkerhenderson

1
บรรทัดที่สองคือ echo "deb old-releases.ubuntu.com/ubuntu raring ลิขสิทธิ์จักรวาลที่ จำกัด หลัก"> /etc/apt/sources.list.d/ia32-libs-raring.list
Vigen

77

ติดตั้ง gcc หลายไลบรารี

sudo apt-get install gcc-multilib

2
แพ็คเกจเมตา gcc-multilib ใน 14.04 นี้เป็นการแทนที่แบบดรอปอินที่ใกล้เคียงที่สุดสำหรับแพ็คเกจเมตา ia32-libs ที่อยู่ใน 12.04 ที่ฉันเคยพบมา แต่ก็ยังไม่เป็นไปตามการอ้างอิงของแพ็คเกจที่ตั้งค่าไว้อย่างชัดเจนเป็น ia32-libs .
quickthyme

7
ไม่สามารถเพิ่มคะแนนได้เพียงพอ สิ่งนี้และlibstdc++6-4.7-dev:i386จำเป็นในการแยกเครื่องเสมือนของ Internet Explorer จาก www.modern.ie
Tek

สิ่งนี้ยังใช้งานได้บน Ubuntu 16.04 (แต่ฉันไม่รู้ว่ามันสมบูรณ์แค่ไหน)
ปีเตอร์

ฉันต้อง:sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Mike Godin เมื่อ

56

คำตอบที่ดีที่สุดที่ฉันเคยเห็นคือจะเรียกใช้แอปพลิเคชัน 32 บิตบน Ubuntu 64 บิตได้อย่างไร

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo ./adb

2
มันเป็นปัญหาโดยสิ้นเชิงกับ adb ของฉัน (เต็มไปด้วย clockworkmod carbon / helium) ขอบคุณสำหรับคำตอบที่ตรงจุดสำหรับปัญหาของฉัน (อาจจะไม่ใช่ปัญหา OP นะ ^^) และอย่างไรก็ตามคำตอบนี้สำหรับฉันดูเหมือนจะสะอาดกว่า ไม่มีการเพิ่มลิงค์ที่เก็บ ubuntu เวอร์ชันก่อนหน้าซึ่งจะสร้างความยุ่งเหยิงหลังจากนั้นฉันแน่ใจว่า…
Dolanor

1
นี่เป็นเคล็ดลับสำหรับฉันเช่นกันโดยที่ฉันได้รับความช่วยเหลือ (และแทบจะไม่ได้ผลการค้นหาใด ๆ ของ Google ด้วยดังนั้นโปรดภาวนาให้สิ่งนี้ได้รับการจัดทำดัชนี) ข้อผิดพลาด "ขณะโหลดไลบรารีที่ใช้ร่วมกัน: libncurses.so.5" ขอบคุณ!
Honoki

คำตอบที่ดีสำหรับ Ubuntu 14.04 แต่ใช้งานไม่ได้ในวันที่ 16.04
Peter

29

ในที่สุดฉันก็มาถึง! นี่คือทางของฉันและฉันหวังว่ามันจะช่วยคุณได้ :)

sudo apt-get install libc6:i386
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
rm /etc/apt/sources.list.d/ia32-libs-raring.list
apt-get update
exit
sudo apt-get install gcc-multilib

ฉันไม่รู้เหตุผลว่าทำไมฉันต้องติดตั้ง แต่มันใช้ได้กับคอมพิวเตอร์ของฉัน เมื่อคุณติดตั้งแพ็คเกจเหล่านี้เสร็จแล้วก็ถึงเวลาลอง โอ้ใช่ฉันต้องบอกคุณ คราวนี้เมื่อคุณต้องการที่จะรวบรวมรหัสของคุณคุณควรเพิ่ม-m32หลังจากที่ตัวอย่างเช่น:gcc gcc -m32 -o hello helloworld.cเพียงmake cleanและmakeอีกครั้ง ขอให้โชคดีนะเพื่อน

PS: สภาพแวดล้อมของฉันคือ: Ubuntu 14.04 64-bit (Trusty Tahr) และ GCC เวอร์ชัน 4.8.4 ผมได้เขียนวิธีการแก้ปัญหาในบล็อกของฉัน แต่มันอยู่ในจีน :-) - วิธีการเข็มทิศ 32bit programm ภายใต้ ubuntu14.04


อาจเป็นที่ชัดเจนสำหรับทุกคนที่ต้องทำสิ่งนี้ แต่อย่าใส่ "/" ในคำสั่ง rm
keefer

ใช่มันเป็นความผิดพลาดของฉัน ตอนนี้ได้แก้ไขแล้ว ขอบคุณ ~ @keefer
andycoder

2
-1: แม้ว่าจะได้ผล แต่ก็เป็นการปฏิบัติที่แย่มาก มีวิธีแก้ปัญหาที่ดีกว่ามากในโพสต์ AskUbuntuนี้ที่ไม่ต้องติดตั้งที่เก็บเก่า วิธีนี้ควรใช้สำหรับแพ็กเกจไบนารีที่เก่ามากเท่านั้น แต่เนื่องจากคุณมีซอร์สโค้ดวิธีนี้จึงไม่เหมาะสมจริงๆ
jmiserez

Raring archive ไม่มีอยู่ในไฟล์เก็บถาวรของ Ubuntu อีกต่อไป ฉันเปลี่ยนไฟล์เก็บถาวร raring สำหรับไฟล์เก็บถาวรที่แม่นยำ แพ็คเกจ ia32-libs จะติดตั้งทันที
Zhenya

-1 สำหรับฉันด้วย คุณจะประสบปัญหามากมายเกี่ยวกับการอ้างอิงที่มาจาก 2 เวอร์ชัน แม้ว่าคุณจะลบการอ้างอิง raring ในภายหลังก็ตาม เห็นด้วยกับ @jmiserez
Dolanor

20

ห้องสมุดทางเลือกเหล่านี้เหมาะสำหรับฉัน:

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6

17

ฉันมีปัญหาเดียวกันกับด้านบนและEclipseแนะนำให้ติดตั้ง:

Hint: On 64-bit systems, make sure the 32-bit libraries are installed:   
   "sudo apt-get install ia32-libs"    
or on some systems,  
   "sudo apt-get install lib32z1"   

เมื่อฉันพยายามติดตั้ง ia32-libs Ubuntu ได้รับแจ้งให้ติดตั้งแพ็คเกจอื่น ๆ อีกสามแพ็คเกจ:

$ sudo apt-get install ia32-libs  
Reading package lists... Done  
Building dependency tree         
Reading state information... Done  
Package ia32-libs is not available, but is referred to by another package.  
This may mean that the package is missing, has been obsoleted, or  
is only available from another source  
However the following packages replace it:  
  lib32z1 lib32ncurses5 lib32bz2-1.0  

E: Package 'ia32-libs' has no installation candidate  
$   
$ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0    

ด้วย Android Studio และ intellij ฉันต้องติดตั้ง libstdc ++ 6 เวอร์ชัน 32 บิตด้วย:

sudo apt-get install lib32stdc++6

นี่ดูเหมือนจะเป็นวิธีแก้ปัญหาสำหรับฉันเนื่องจากแพ็คเกจ ia32-libs ล้าสมัยและใช้งานได้!
daniel souza

สิ่งนี้lib32z1ไม่มีค่า
zjk

8

สำหรับฉันฉันต้องวิ่ง

sudo dpkg --add-architecture i386

ก่อนที่จะเรียกใช้คำตอบของ Mike Tang มิฉะนั้นฉันจะไม่สามารถติดตั้ง ia32-libs ได้


4

เพียงติดตั้งโปรแกรมเวอร์ชัน 32 บิตแทนเวอร์ชัน 64 บิต

วิธีนี้ปลอดภัยกว่าการติดตั้งแพ็คเกจที่ไม่ได้มีไว้สำหรับแจกจ่ายในมือ

ผมได้รับข้อเสนอแนะนี้จากคำแนะนำการติดตั้ง Google Earth สำหรับ Ubuntu 14.04 Google Earth เคยใช้งานia32-libsภายใต้ Ubuntu 12.04 64 บิต

อ้างถึงwebupd8.org :

แพ็คเกจ ia32-libs ไม่มีใน Ubuntu อีกต่อไปโดยเริ่มจาก Ubuntu 13.10 แพคเกจนี้ถูกแทนที่ด้วยการรองรับ multiarch ดังนั้นคุณจึงไม่ต้องการมันอีกต่อไป แต่แพ็คเกจ 64 บิต (ซึ่งจริงๆแล้วเป็นแอปพลิเคชัน 32 บิต) ยังคงขึ้นอยู่กับแพ็คเกจนี้และด้วยเหตุนี้จึงไม่สามารถติดตั้งใน Ubuntu 14.04 หรือ 13.10 ได้ 64bit [ ... ]

"แก้ไข" หรือโดยเฉพาะอย่างยิ่งวิธีที่ถูกต้องในการติดตั้งแอพเหล่านี้ซึ่งขึ้นอยู่กับ ia32-libs คือเพียงแค่ติดตั้งแพ็คเกจ 32 บิตบน Ubuntu 64 บิต แน่นอนว่าจะติดตั้งแพ็คเกจ 32 บิตไม่กี่ตัว แต่นั่นเป็นวิธีการทำงานของ multiarch

ปัญหาของบางโปรแกรม (เช่น Google Earth) คือแพ็คเกจ 32 บิตไม่รองรับ multiarch ดังนั้นจำเป็นต้องติดตั้งการอ้างอิง 32 บิตด้วยตนเองเพื่อให้โปรแกรมเวอร์ชัน 32 บิตทำงานบน Ubuntu 64 บิต

sudo dpkg --add-architecture i386 # only needed once
sudo apt-get update
sudo apt-get install libfontconfig1:i386 libx11-6:i386 libxrender1:i386 libxext6:i386 libgl1-mesa-glx:i386 libglu1-mesa:i386 libglib2.0-0:i386 libsm6:i386

2
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
rm /etc/apt/sources.list.d/ia32-libs-raring.list
apt-get update
exit

หากคุณอยู่ในประเทศจีนคุณสามารถปรับเปลี่ยน "raring" เป็น " precision " ได้ (สำหรับUbuntu 13.04 (Raring Ringtail) และUbuntu 12.04 LTS (Precise Pangolin)ตามลำดับ) ฉันติดตั้งBeyond Compareบน Ubuntu 14.04 (Trusty Tahr)


1

ปัญหาคือในหลาย ๆ กรณีแพ็กเกจเป็นแบบ multiarch อยู่แล้วดังนั้นแพ็กเกจ i386 จึงไม่พร้อมใช้งาน แต่แพ็กเกจอื่น ๆ ยังคงขึ้นอยู่กับแพ็กเกจ i386 เท่านั้น นี่เป็นปัญหาในที่เก็บและผู้จัดการของที่เก็บควรแก้ไข


0

วิธีแก้ปัญหาคือเพิ่มวิธีแพ็คเกจDebian ที่เกี่ยวข้องไปยังที่เก็บของคุณ สำหรับสิ่งนี้ให้พิมพ์คำสั่งด้านล่าง:

echo "deb ftp.us.debian.org/debian wheezy main" >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install ia32-libs-i386

บรรทัดแรกเขียนท้ายsources.listไฟล์ด้วยวิธีการแพ็กเกจ สิ่งนี้ใช้ได้กับฉัน ฉันหวังว่าจะช่วยคุณ


deb ftp: / / ftp. เรา .. ฯลฯ มันใช้งานได้ แต่ไม่ได้แก้ปัญหาของฉัน (
waza123
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.