Ubuntu 14.04 LTS'ye (Trusty Tahr) ia32-libs nasıl kurulur


115

Dün Ubuntu 14.04'ü (Trusty Tahr) kurdum. Herşey yolunda görünüyor. Ancak bazı C kodunu derlemeye çalıştığımda aşağıdaki hatayla karşılaşıyorum. Hata, 32 bit mimari desteğinden yoksun işletim sisteminden kaynaklanıyor gibi görünüyor. Hata çıktısı aşağıdaki gibidir:

/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

Eskiden apt-get install ia32-libsUbuntu 12.04 (Hassas Pangolin) kullanılarak zaman. Ama bildiğim şey, Ubuntu'nun ia32-lib'leri Ubuntu 13.10'dan (Saucy Salamander) kaldırdığı. Bu sorunu nasıl çözebilirim?


Ubuntu için multiarch bilgilerini kontrol edin. 32bit sürümünü kurmak için bir paket adına i386 ekleyebilirsiniz.
TeTeT

1
Tam olarak bu problemim var, fortinet vpn istemcisini çalıştırmak için ia32-lib'lere ihtiyacım var, 10.04 LTS ve 12.04 LTS altında mükemmel çalıştı. 'Sudo apt-get install ia32-libs: i386' denedim ama çalışmıyor, ayrıca 'lib32z1 lib32ncurses5 lib32bz2-1.0' paketlerini de kurdum ama çalışmıyorlar.
javaPhobic

@javaPhobic ubuntu12.04 (32bit) kurmaya karar verdim. Sorumla ilgili bazı cevaplarım var. Anahtarlarım değiller ama size yardımcı olabilirler. 1. Temizlemeyi deneyebilir ve ardından kodunuzu yeniden oluşturabilirsiniz. 2. Mike Tang'ın cevabına benzer şekilde tüm ia32-lib'leri kurmayı deneyebilirsiniz. 3. Eğer örneğin, kod pusula zaman -m32` `` eklemeyi deneyebilirsiniz: gcc -m32 helloworld.c. İyi şanslar.
andycoder

Bu gerçekten Sunucu Hatası olmalıdır.
AStopher

2
Bu soruyu konu dışı olarak kapatmaya oy veriyorum çünkü bu, linux için kütüphanelerin konumu ile ilgili. Teğetsel olarak programlama ile ilgili olsa da , çözüm bir programlama değil, linux konfigürasyon yanıtı olacaktır.
BradleyDotNET

Yanıtlar:


140

Bunu 32 bit kitaplığı yüklemek için deneyebilirsiniz (tümü ia32-libs'de değil):

sudo  apt-get install program:i386

sudo dpkg --add-architecture i386 gerekli olabilir (bunu hiç çalıştırmadıysanız).


Ya da ia32-lib'in tamamını kurmak istiyorsanız, aşağıdaki sırayı deneyin:

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

Not: Bu şekilde kurabilirsiniz ia32-libs. Ancak bunun yerine 13.04 kaynağını ekliyoruz, bu nedenle bilinmeyen bazı sorunlar olabilir. Yükledikten sonra ia32-libs, ia32-libs-raring.listgirişi çıkarmanızı /etc/apt/sources.list.dve yapmanızı öneririm sudo apt-get update.


Android SDK'nın bağımlılığını düzeltmek istiyorsanız, şunu deneyebilirsiniz:

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


3
E: 'ia32-libs' paketinin kurulum adayı yok
ThatAintWorking

2
Archive.ubuntu.com'a erişemedim. Birçok bulunamadı süre apt-get update. Bu yüzden paket kaynağını olarak değiştirdim deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse. Şimdi çalışıyor.
Tim Wu

3
Nadir arşiv artık ubuntu arşivinde mevcut değil. Kesin arşiv için hazır olan arşivi değiştirdim. Paket ia32-libs şimdi yüklenecek.
Martijn Burger

14.04'te çalışmıyor. Benim için çalışan çözüm, Aleksei'nin cevabıdır.
joelparkerhenderson

1
ikinci satır echo "deb old-releases.ubuntu.com/ubuntu, ana sınırlı evren çoklu evrenini nadiren "> /etc/apt/sources.list.d/ia32-libs-raring.list
Vigen

77

Gcc çoklu kitaplığını kurun.

sudo apt-get install gcc-multilib

2
14.04'teki bu gcc-multilib meta paketi, 12.04'te şimdiye kadar karşılaştığım ia32-libs meta paketi için en yakın drop-in değişimidir, ancak yine de açıkça ia32-libs olarak ayarlanan paket bağımlılıklarını karşılamıyor .
quickthyme

7
Buna yeterince olumlu oy veremiyorum. Bu libstdc++6-4.7-dev:i386, Internet Explorer sanal makinelerini www.modern.ie'den çıkarmak için gereklidir
Tek

bu hala Ubuntu 16.04'te çalışıyor (ancak ne kadar eksiksiz olduğunu bilmiyorum)
Peter

Ayrıca yapmak zorundaydım:sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Mike Godin

56

Şimdiye kadar gördüğüm en iyi cevap 32-bit uygulamaları Ubuntu 64-bit üzerinde nasıl çalıştırırım?

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

2
Bu tamamen benim adb'imle ilgili bir sorundu (clockworkmod karbon / helyum ile dolu). Benim problemim için doğru olan cevabınız için teşekkürler (belki de OP problemi değil, ama ^^). Ve her neyse, bu cevap bana daha temiz gibi görünüyor. Önceki ubuntu sürüm havuzu bağlantısını eklememek yok, bu daha sonra büyük bir karışıklık yaratacaktır ...
Dolanor

1
Bu aynı zamanda benim için hile yaptı, burada yardımcı olmayan (ve neredeyse hiç Google sonucu da yok, bu yüzden lütfen bu dizine eklenir) hatası "paylaşılan kitaplıkları yüklerken hata: libncurses.so.5". Teşekkürler!
Honoki

Ubuntu 14.04 için harika cevap ancak 16.04'te çalışmıyor
Peter

29

Sonunda anladım! İşte benim yolum ve umarım size yardımcı olabilir :)

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

Bunları neden yüklemem gerektiğini bilmiyorum ama bilgisayarımda çalışıyor. Bu paketleri yüklemeyi bitirdiğinizde, deneme zamanı. Oh evet, sana söylemem gerek. Kodunuzu derlemek istiyorum Bu sefer, eklemek gerekir -m32sonra gccörneğin: gcc -m32 -o hello helloworld.c. Sadece make cleanve maketekrar. İyi şanslar arkadaşlar.

Not: benim ortamım: Ubuntu 14.04 64-bit (Trusty Tahr) ve GCC sürüm 4.8.4. Çözümü bloguma yazdım, ancak Çince :-) - ubuntu14.04 altında 32bit programın pusulası nasıl yapılır .


Muhtemelen bunu yapmak zorunda olan herkes için açıktır, ancak "/" yi rm ifadesine koymayın.
keefer

Evet, bu benim hatam. Şimdi düzelttim. Teşekkürler ~ @keefer
andycoder

2
-1: Bu işe yarasa da, gerçekten kötü bir uygulama. Bu AskUbuntu gönderisinde eski depoların yüklenmesini gerektirmeyen çok daha iyi çözümler var . Bu yöntem yalnızca çok eski ikili paketler için gerekli olmalıdır. Ancak kaynak kodunuz olduğu için bu yöntem gerçekten uygun değil.
jmiserez

Nadir arşiv artık ubuntu arşivinde mevcut değil. Kesin arşiv için hazır olan arşivi değiştirdim. Paket ia32-libs şimdi yüklenecek.
Zhenya

-1 de benim için. 2 sürümden gelen bağımlılıklarla ilgili bir sürü sorunla karşılaşacaksınız. Daha sonra nadir referansları kaldırsanız bile. @Jmiserez ile tamamen katılıyorum.
Dolanor

20

Bu alternatif kütüphaneler benim için çalıştı:

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

17

Yukarıdakiyle aynı sorunu yaşadım ve Eclipse yüklemeyi önerdi:

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"   

İa32-libs'i kurmaya çalıştığımda, Ubuntu üç farklı paket kurmamı istedi:

$ 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 ve intellij ile libstdc ++ 6'nın 32bit sürümünü de yüklemem gerekiyordu:

sudo apt-get install lib32stdc++6

Bu benim için çözüm gibi görünüyor, çünkü ia32-libs paketi eski ve çalışıyor!
daniel souza

Bu lib32z1paha biçilemez
zjk

8

Benim için koşmalıyım

sudo dpkg --add-architecture i386

Mike Tang'ın cevabını çalıştırmadan önce. Aksi takdirde, ia32-libs'i kuramıyorum.


4

Programın 64 bit sürümü yerine 32 bit sürümünü kurmanız yeterlidir .

Bu, eldeki dağıtım için tasarlanmamış paketleri kurmaktan çok daha güvenlidir.

Bu öneriyi Ubuntu 14.04 için Google Earth kurulum talimatlarından aldım . Google Earth ia32-libs, 64 bit Ubuntu 12.04'ün altında kullanıyordu .

Webupd8.org'dan alıntı yapmak :

İa32-libs paketi, Ubuntu 13.10'dan başlayarak artık Ubuntu'da bulunmamaktadır. Paketin yerini multiarch desteği aldı, bu yüzden artık ona ihtiyacınız yok, ancak bazı 64bit paketleri (aslında 32bit uygulamalar) hala bu pakete bağlı ve bu nedenle Ubuntu 14.04 veya 13.10'a yüklenemezler, 64bit. [...]

İa32-libs'e bağlı olan bu uygulamaları kurmanın "düzeltmesi" veya daha spesifik olarak doğru yolu, 32bit paketini Ubuntu 64bit'e kurmaktır. Tabii ki, bu epeyce 32 bitlik paket kuracak, ancak multiarch böyle çalışıyor.

Bazı programlardaki (Google Earth gibi) sorun, 32 bitlik paketin multiarch'ı desteklememesidir. Sonuç olarak, programın 32 bit sürümünün Ubuntu 64 bit üzerinde çalışması için bazı 32 bit bağımlılıkların manuel olarak yüklenmesi gerekir.

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

Çin'deyseniz, " raring " i "kesin" olarak değiştirebilirsiniz (sırasıyla Ubuntu 13.04 (Raring Ringtail) ve Ubuntu 12.04 LTS (Precise Pangolin) için ). Ben yüklü ötesinde karşılaştır Ubuntu 14.04 (Trusty Tahr) üzerinde.


1

Sorun şu ki, birçok durumda paketler zaten multiarch olduğundan i386 paketi mevcut değil, ancak diğer paketler hala yalnızca i386 paketine bağlı. Bu, depodaki bir sorundur ve depoların yöneticileri bunu düzeltmelidir


0

Çözüm, deponuza karşılık gelen Debian paketi yolunu eklemektir . Bunun için aşağıdaki komutları yazın:

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

İlk satır sources.listdosyanın sonuna paket şeklinde yazar. Bu benim için çalışıyor. Bunun size yardımcı olmasını dilerim.


deb ftp: / / ftp. bize .. vb, çalışıyor, ancak sorunumu
çözmedi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.