web-dev-qa-db-ja.com

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

私は昨日Ubuntu 14.04(Trusty Tahr)をインストールしました。すべて問題ないようです。しかし、Cコードをコンパイルしようとすると、次のエラーが発生します。このエラーは、OSが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

Ubuntu 12.04(Precise Pangolin)を使っていたときはapt-get install ia32-libsを使っていました。しかし私が知っているのは、Ubuntu 13.10(Saucy Salamander)以降、Ubuntuがia32-libを削除したことです。どうすればこの問題を解決できますか?

114
andycoder

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

シモンズ:この方法で、あなたは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

140
MikeCoder

Gccマルチライブラリをインストールしてください。

Sudo apt-get install gcc-multilib
76
Nelson Chen

私が今まで見た中で最も良い答えはUbuntu 64-bitで32-bitアプリケーションを実行するにはどうすればいいですか?

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

ついに手に入れました!これが私のやり方です、そしてそれがあなたに役立つことを願っています:)

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

私がこれらをインストールする必要がある理由はわかりませんが、それは私のコンピュータ上で動作します。これらのパッケージのインストールが終わったら、試す時間です。ああ、私はあなたに言う必要があります。今度はコードをコンパイルしたいときは、gccの後に-m32を追加する必要があります。例えば、gcc -m32 -o hello helloworld.cです。もう一度make cleanmakeにしてください。頑張って友達。

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

29
andycoder

これらの代替ライブラリは私のために働きました:

Sudo apt-get update
Sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
20
wisbucky

私は上記と同じ問題を抱えていたと 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
17
Bob

私にとっては、私は走らなければなりません

Sudo dpkg --add-architecture i386

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

8
fkpwolf

単純に32ビットバージョンのプログラムをインストールします。64ビットバージョンの代わりに を使用します。

当面の配布を意図していないパッケージをインストールするよりもはるかに安全です。

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

引用/ webupd8.org

Ubuntu 13.10から、ia32-libsパッケージはUbuntuでは使用できなくなりました。このパッケージはマルチアーキテクチャサポートに置き換えられたため、これ以上必要としませんが、64ビットパッケージ(実際には32ビットアプリケーション)の中にはまだこのパッケージに依存しているものがあります。 64ビット[...]

Ia32-libsに依存するこれらのアプリを「修正する」またはもっと正確にインストールする正しい方法は、単に32ビットパッケージをUbuntu 64ビットにインストールすることです。もちろん、これでかなりの数の32ビットパッケージがインストールされますが、それがマルチアーチの機能です。

(Google Earthのような)いくつかのプログラムの問題は、32ビットパッケージがマルチアーキテクチャをサポートしていないことです。そのため、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
4
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"を修正することができます(それぞれ Ubuntu 13.04 (Raring Ringtail)および Ubuntu 12.04 LTS(Precise Pangolin) に)。 Ubuntu 14.04(Trusty Tahr)に Beyond Compare をインストールしました。

2
user3999490

問題は、多くの場合、パッケージはすでにマルチアーキテクチャなので、i386パッケージは利用できないが、それでも他のパッケージはi386パッケージだけに依存していることです。これはリポジトリ内の問題であり、リポジトリの管理者が修正する必要があります。

1

解決策は対応する Debian packageの方法をあなたのリポジトリに追加することです。これには、以下のコマンドを入力します。

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ファイルの最後にパッケージの方法を書いています。これは私のために働きます。お役に立てば幸いです。

0
bbruno5