Cara menginstal ia32-libs di Ubuntu 14.04 LTS (Trusty Tahr)

115

Saya menginstal Ubuntu 14.04 (Trusty Tahr) kemarin. Segalanya tampak baik-baik saja. Tetapi ketika saya mencoba mengkompilasi beberapa kode C, saya menemukan kesalahan berikut. Kesalahan tampaknya disebabkan oleh OS yang kurang mendukung arsitektur 32-bit. Output kesalahannya adalah sebagai berikut:

/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

Saya dulu apt-get install ia32-libsketika saya menggunakan Ubuntu 12.04 (Precise Pangolin). Tapi yang saya tahu adalah Ubuntu telah menghapus ia32-libs sejak Ubuntu 13.10 (Saucy Salamander). Bagaimana cara memperbaiki masalah ini?

andycoder
sumber
Periksa informasi multiarch untuk Ubuntu. Anda dapat menambahkan: i386 ke nama paket untuk menginstal versi 32-bitnya.
TeTeT
1
Saya memiliki masalah ini, saya memerlukan ia32-libs untuk menjalankan fortinet vpn client, ini bekerja dengan sempurna di bawah 10.04 LTS dan 12.04 LTS. Saya mencoba 'sudo apt-get install ia32-libs: i386' tetapi tidak berhasil, saya juga telah menginstal paket 'lib32z1 lib32ncurses5 lib32bz2-1.0' tetapi tidak berfungsi.
javaPhobic
@javaPhobic Saya memutuskan untuk menginstal ubuntu12.04 (32bit). Tentang pertanyaan saya, saya punya beberapa jawaban. Itu bukan kunci saya, tapi mungkin bisa membantu Anda. 1. Anda dapat mencoba membuat bersih lalu membuat kode Anda lagi. 2. Anda dapat mencoba menginstal seluruh ia32-libs, seperti jawaban Mike Tang. 3. Anda dapat mencoba untuk menambahkan `` -m32` ketika Anda kompas kode Anda, misalnya: gcc -m32 helloworld.c. Semoga berhasil.
andycoder
Ini harus benar-benar ada di Kesalahan Server.
AStopher
2
Saya memilih untuk menutup pertanyaan ini sebagai di luar topik karena ini tentang lokasi pustaka untuk linux. Sementara secara tangensial tentang pemrograman, solusinya akan lebih pada jawaban konfigurasi linux, bukan pemrograman.
BradleyDotNET

Jawaban:

140

Anda dapat mencoba ini untuk menginstal pustaka 32-bit (tidak semua di ia32-libs):

sudo  apt-get install program:i386

sudo dpkg --add-architecture i386 mungkin diperlukan (jika Anda belum pernah menjalankannya).


Atau jika Anda ingin menginstal seluruh ia32-lib, coba urutan berikut:

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: Dengan cara ini, Anda dapat menginstal ia32-libs. Namun, kami menambahkan sumber 13.04, jadi, mungkin ada beberapa masalah yang tidak diketahui. Setelah menginstal ia32-libs, saya sarankan Anda untuk menghapus ia32-libs-raring.listdalam /etc/apt/sources.list.d, dan melakukan sudo apt-get update.


Jika Anda ingin memperbaiki ketergantungan SDK Android, Anda dapat mencoba ini di bawah ini:

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

MikeCoder
sumber
3
E: Paket 'ia32-libs' tidak memiliki kandidat instalasi
ThatAintWorking
2
Saya tidak dapat mengakses archive.ubuntu.com. Banyak sementara tidak ditemukanapt-get update . Jadi saya mengubah sumber paket menjadi deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse. Sekarang berhasil.
Tim Wu
3
Arsip Raring tidak lagi tersedia di arsip ubuntu. Saya mengubah arsip raring untuk arsip yang tepat. Paket ia32-libs akan diinstal sekarang.
Martijn Burger
Tidak berfungsi pada 14.04. Solusi yang berhasil untuk saya adalah jawaban Aleksei.
joelparkerhenderson
1
baris kedua adalah echo "deb old-releases.ubuntu.com/ubuntu membesarkan semesta terbatas utama multiverse"> /etc/apt/sources.list.d/ia32-libs-raring.list
Vigen
77

Instal beberapa pustaka gcc.

sudo apt-get install gcc-multilib
Nelson Chen
sumber
2
Paket meta gcc-multilib di 14.04 ini adalah pengganti drop-in terdekat untuk paket meta ia32-libs yang ada di 12.04 yang saya temui sejauh ini, tetapi masih tidak memenuhi dependensi paket yang secara eksplisit ditetapkan ke ia32-libs .
quickthyme
7
Tidak bisa memberi suara positif cukup. Ini dan libstdc++6-4.7-dev:i386diperlukan untuk mengekstrak mesin virtual Internet Explorer dari www.modern.ie
Tek
ini masih berfungsi di Ubuntu 16.04 (tapi saya tidak tahu seberapa lengkapnya)
Peter
Saya juga harus:sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Mike Godin
56

Jawaban terbaik yang pernah saya lihat adalah Bagaimana cara menjalankan aplikasi 32-bit di Ubuntu 64-bit?

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo ./adb
Aleksei
sumber
2
Itu benar-benar masalah dengan adb saya (dikemas dengan karbon / helium clockworkmod). Terima kasih atas jawaban yang tepat untuk masalah saya (mungkin bukan masalah OP, meskipun ^^). Dan bagaimanapun, jawaban ini menurut saya adalah yang lebih bersih. Tidak menambahkan tautan repositori versi ubuntu sebelumnya, yang akan membuat kekacauan besar setelah itu saya yakin…
Dolanor
1
Ini juga melakukan trik untuk saya, di mana saya mendapatkan tidak membantu (dan hampir tidak ada hasil Google juga, jadi doakan ini diindeks) kesalahan "saat memuat perpustakaan bersama: libncurses.so.5". Terima kasih!
Honoki
jawaban bagus untuk Ubuntu 14.04 tetapi tidak berfungsi pada 16.04
Peter
29

Saya akhirnya mendapatkannya! Inilah cara saya, dan saya harap ini dapat membantu Anda :)

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

Saya tidak tahu alasan mengapa saya perlu menginstal ini, tetapi berfungsi di komputer saya. Setelah Anda selesai menginstal paket-paket ini, inilah saatnya untuk mencoba. Oh ya, saya perlu memberi tahu Anda. Kali ini ketika Anda ingin mengkompilasi kode Anda, Anda harus menambahkan -m32setelah gcc, misalnya: gcc -m32 -o hello helloworld.c. Hanya make cleandan makelagi. Semoga beruntung teman.

PS: lingkungan saya adalah: Ubuntu 14.04 64-bit (Trusty Tahr) dan GCC versi 4.8.4. Saya telah menulis solusinya di blog saya, tetapi dalam bahasa Cina :-) - Cara kompas program 32bit di bawah ubuntu14.04 .

andycoder
sumber
Mungkin sudah jelas bagi siapa pun yang benar-benar harus melakukan ini, tetapi jangan letakkan "/" di pernyataan rm.
keefer
Ya, itu kesalahanku. Saya telah memperbaikinya sekarang. Terima kasih ~ @keefer
andycoder
2
-1: Meskipun ini berhasil, ini adalah praktik yang sangat buruk . Ada solusi yang jauh lebih baik dalam posting AskUbuntu ini yang tidak perlu menginstal repositori lama. Metode ini hanya diperlukan untuk paket biner yang sangat lama. Tetapi karena Anda memiliki kode sumber, metode ini benar-benar tidak sesuai.
jmiserez
Arsip Raring tidak lagi tersedia di arsip ubuntu. Saya mengubah arsip raring untuk arsip yang tepat. Paket ia32-libs akan diinstal sekarang.
Zhenya
-1 untukku juga. Anda akan menghadapi banyak masalah dengan dependensi yang berasal dari 2 versi. Bahkan jika Anda menghapus referensi langka setelahnya. Sangat setuju dengan @jmiserez.
Dolanor
20

Perpustakaan alternatif ini berfungsi untuk saya:

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

Saya memiliki masalah yang sama seperti di atas dan Eclipse menyarankan untuk menginstal:

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"   

Ketika saya mencoba menginstal ia32-libs, Ubuntu diminta untuk menginstal tiga paket lainnya:

$ 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    

Dengan Android Studio dan intellij, saya juga harus menginstal versi 32bit dari libstdc ++ 6:

sudo apt-get install lib32stdc++6
Bob
sumber
Ini tampaknya solusi bagi saya, karena paket ia32-libs sudah usang, dan berfungsi!
daniel souza
Ini lib32z1tak ternilai harganya
zjk
8

Bagi saya, saya harus lari

sudo dpkg --add-architecture i386

sebelum menjalankan jawaban Mike Tang. Jika tidak, saya tidak dapat menginstal ia32-libs.

fkpwolf.dll
sumber
4

Cukup instal program versi 32-bit, bukan versi 64-bit.

Ini jauh lebih aman daripada menginstal paket yang tidak dimaksudkan untuk distribusi yang ada.

Saya mendapat saran ini dari petunjuk instalasi Google Earth untuk Ubuntu 14.04 . Google Earth dulu menggunakan ia32-libsUbuntu 12.04 64-bit.

Mengutip webupd8.org :

Paket ia32-libs tidak lagi tersedia di Ubuntu, dimulai dengan Ubuntu 13.10. Paket ini digantikan oleh dukungan multiarch sehingga Anda tidak membutuhkannya lagi, tetapi beberapa paket 64bit (yang sebenarnya merupakan aplikasi 32bit) masih bergantung pada paket ini dan karena itu, mereka tidak dapat diinstal di Ubuntu 14.04 atau 13.10, 64 bit. [...]

"Memperbaiki" atau lebih khusus lagi cara yang benar untuk menginstal aplikasi ini yang bergantung pada ia32-libs adalah dengan menginstal paket 32bit di Ubuntu 64bit. Tentu saja, itu akan menginstal beberapa paket 32bit, tetapi begitulah cara kerja multiarch.

Masalah dengan beberapa program (seperti Google Earth) adalah paket 32-bit tidak mendukung multiarch. Akibatnya, beberapa dependensi 32-bit perlu diinstal secara manual untuk menjalankan program versi 32-bit di Ubuntu 64-bit.

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
Serge Stroobandt
sumber
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

Jika Anda berada di China, Anda dapat memodifikasi "raring" menjadi "presisi" (untuk Ubuntu 13.04 (Raring Ringtail) dan Ubuntu 12.04 LTS (Precise Pangolin) ). Saya menginstal Beyond Compare di Ubuntu 14.04 (Trusty Tahr).

pengguna3999490
sumber
1

Masalahnya adalah dalam banyak kasus, paket sudah multiarch sehingga paket i386 tidak tersedia, tetapi paket lain masih bergantung pada paket i386 saja. Ini adalah masalah di repositori, dan manajer repo harus memperbaikinya

Rand McRanderson
sumber
0

Solusinya adalah menambahkan cara paket Debian yang sesuai ke repositori Anda. Untuk ini, ketik perintah di bawah ini:

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

Baris pertama menulis di akhir sources.listfile dengan cara paket. Ini berhasil untuk saya. Saya berharap itu membantu Anda.

bbruno5
sumber
deb ftp: / / ftp. kami .. dll, berhasil, tetapi tidak menyelesaikan masalah saya (
waza123