Ubuntu 14.04 LTS(Trusty Tahr)にia32-libsをインストールする方法


115

昨日Ubuntu 14.04(Trusty Tahr)をインストールしました。すべてがOKのようです。しかし、Cコードをコンパイルしようとすると、次のエラーが発生します。このエラーは、32ビットアーキテクチャのサポートがないOSが原因であると思われます。エラー出力は次のとおりです。

/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(Precise Pangolin)を使用していたときに使用していました。しかし、私が知っているのは、UbuntuがUbuntu 13.10(Saucy Salamander)以降にia32-libsを削除したことです。この問題を解決するにはどうすればよいですか?


Ubuntuのmultiarch情報を確認してください。パッケージ名に:i386を追加して、32ビットバージョンのパッケージをインストールできます。
TeTeT 2014

1
私はまさにこの問題を抱えており、fortinet vpnクライアントを実行するためにia32-libsが必要です。これは10.04 LTSおよび12.04 LTSで完全に機能しました。「sudo apt-get install ia32-libs:i386」を試してみましたが機能しません。「lib32z1 lib32ncurses5 lib32bz2-1.0」パッケージもインストールしましたが、機能しません。
javaPhobic 14

@javaPhobic ubuntu12.04(32bit)をインストールすることにしました。私の質問について、いくつかの回答を得ました。それらは私の鍵ではありませんが、あなたを助けるかもしれません。1.クリーンにしてから、もう一度コードを作成します。2. Mike Tangの答えと同じように、ia32-lib全体をインストールすることができます。3.コードをコンパスするときに、たとえば「-m32」を追加してみますgcc -m32 helloworld.c。幸運を。
andycoder 14

これは本当にサーバーの障害であるはずです。
AStopher、2015

2
Linuxのライブラリの場所についての質問なので、この質問をトピック外として締めくくります。プログラミングに関しては正接ですが、解決策は、プログラミングの答えではなく、Linux構成の答えに近いものになります。
BradleyDotNET 2015

回答:


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.d、と行いますsudo apt-get update


Android SDKの依存関係を修正したい場合は、以下を試してください:

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


3
E:パッケージ '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アーカイブは、ubuntuアーカイブでは使用できなくなりました。raringアーカイブを正確なアーカイブに変更しました。パッケージia32-libsがインストールされます。
Martijn Burger 2014

14.04では機能しません。私にとって有効な解決策は、アレクセイの答えです。
joelparkerhenderson 2014

1
2行目はecho "deb old-releases.ubuntu.com/ubuntu raring main limited universe multiverse"> /etc/apt/sources.list.d/ia32-libs-raring.list
Vigen

77

複数のgccライブラリをインストールします。

sudo apt-get install gcc-multilib

2
14.04のこのgcc-multilibメタパッケージは、これまでに遭遇した12.04のia32-libsメタパッケージに最も近い代替パッケージですが、明示的にia32-libsに設定されているパッケージの依存関係はまだ満たしていません。
quickthyme 2014

7
これは十分に賛成できません。これlibstdc++6-4.7-dev:i386は、www.modern.ieからInternet Explorer仮想マシンを抽出するために必要です
Tek

これはまだUbuntu 16.04で動作します(しかし、どれほど完成しているかはわかりません)
Peter

:私も持っていたsudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
マイク・ゴダン

56

私が今まで見た中で最も良い答えは、Ubuntu 64ビットで32ビットアプリケーションを実行する方法ですか?

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カーボン/ヘリウムを詰め込んだ)の問題でした。私の問題にスポットを当てたその回答をありがとう(多分OPの問題ではないかもしれませんが^^)。とにかく、この答えは私にはよりきれいに思えます。以前のubuntuバージョンのリポジトリリンクを追加しないと、後で大きな混乱が生じると思います…
Dolanor

1
これは私にとっても役立ちましたが、役に立たなかった(そしてGoogleの結果もほとんどないので、これがインデックスに登録されるように祈ってください)エラー「共有ライブラリの読み込み中にエラー:libncurses.so.5」が発生しました。ありがとう!
ホノキ2014年

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

これらをインストールする必要がある理由はわかりませんが、私のコンピューターで動作します。これらのパッケージのインストールが完了したら、試してみましょう。ああ、そうです。今回は、コードをコンパイルする場合、たとえばの-m32gccにを追加する必要がありますgcc -m32 -o hello helloworld.c。ただ、make cleanおよびmake再び。幸運のお友達。

PS:私の環境は:Ubuntu 14.04 64ビット(Trusty Tahr)およびGCCバージョン4.8.4。私はブログに解決策を書きましたが、それは中国語です:-)- ubuntu14.04で32ビットプログラムをコンパスする方法


実際にこれを行わなければならないことはおそらく明らかですが、rmステートメントに「/」を含めないでください。
キーファー、2014年

はい、それは私の間違いです。今修正しました。ありがとう〜@keefer
andycoder

2
-1:これは機能しますが、それは本当に悪い習慣です。このAskUbuntuの投稿には、古いリポジトリをインストールする必要のない、より優れたソリューションがあります。このメソッドは、非常に古いバイナリパッケージでのみ必要です。しかし、ソースコードがあるので、この方法は本当に適切ではありません。
jmiserez 2014

Raringアーカイブは、ubuntuアーカイブでは使用できなくなりました。raringアーカイブを正確なアーカイブに変更しました。パッケージia32-libsがインストールされます。
Zhenya

私も-1。2つのバージョンからの依存関係に関する多くの問題に直面します。後でレア参照を削除しても。@jmiserezに完全に同意します。
Dolanor 2014年

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は他の3つのパッケージをインストールするように要求しました。

$ 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では、32ビットバージョンのlibstdc ++ 6もインストールする必要がありました。

sudo apt-get install lib32stdc++6

パッケージia32-libsは廃止されており、動作するため、これは私の解決策のようです!
ダニエルsouza

これlib32z1は貴重です
zjk 2016年

8

私にとっては、実行する必要があります

sudo dpkg --add-architecture i386

マイク・タンの答えを実行する前に。そうしないと、ia32-libsをインストールできません。


4

64ビット版ではなく、32ビット版のプログラムをインストールするだけです。

これは、手元の配布を目的としていないパッケージをインストールするよりもはるかに安全です。

この提案は、Ubuntu 14.04のGoogle Earthインストール手順から得られました。Google Earthはia32-libs64ビットのUbuntu 12.04で使用されていました。

webupd8.orgの引用:

Ubuntu 13.10以降、ia32-libsパッケージはUbuntuでは使用できなくなりました。パッケージはmultiarchサポートに置き換えられたため、もう必要ありませんが、一部の64ビットパッケージ(実際には32ビットアプリケーションです)はこのパッケージに依存しており、このため、Ubuntu 14.04または13.10にインストールできません。 64ビット。[...]

「修正」、つまりia32-libsに依存するこれらのアプリをインストールする正しい方法は、32ビットパッケージをUbuntu 64ビットにインストールすることです。もちろん、これはかなりの数の32ビットパッケージをインストールしますが、それがmultiarchの動作方法です。

一部のプログラム(Google Earthなど)の問題は、32ビットパッケージがmultiarchをサポートしていないことです。したがって、32ビットバージョンのプログラムをUbuntu 64ビットで実行するには、32ビットの依存関係を手動でインストールする必要があります。

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」を「precise」に変更できます(Ubuntu 13.04(Raring Ringtail)およびUbuntu 12.04 LTS(Precise Pangolin)の場合)。Beyond CompareをUbuntu 14.04(Trusty Tahr)にインストールしました。


1

問題は、多くの場合、パッケージがすでにマルチアーキテクチャであり、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 '29
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.