私は昨日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を削除したことです。どうすればこの問題を解決できますか?
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
Gccマルチライブラリをインストールしてください。
Sudo apt-get install gcc-multilib
私が今まで見た中で最も良い答えは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
ついに手に入れました!これが私のやり方です、そしてそれがあなたに役立つことを願っています:)
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 clean
とmake
にしてください。頑張って友達。
シモンズ:私の環境は、Ubuntu 14.04 64ビット(Trusty Tahr)およびGCCバージョン4.8.4です。私は私のブログで解決策を書きましたが、それは中国語です:-) - ubuntu14.04の下で32ビットプログラムをコンパスする方法 。
これらの代替ライブラリは私のために働きました:
Sudo apt-get update
Sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
私は上記と同じ問題を抱えていたと 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
私にとっては、私は走らなければなりません
Sudo dpkg --add-architecture i386
マイク・タンの答えを実行する前に。そうでなければ、私はia32 - libsをインストールすることはできません。
単純に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
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 をインストールしました。
問題は、多くの場合、パッケージはすでにマルチアーキテクチャなので、i386パッケージは利用できないが、それでも他のパッケージはi386パッケージだけに依存していることです。これはリポジトリ内の問題であり、リポジトリの管理者が修正する必要があります。
解決策は対応する 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
ファイルの最後にパッケージの方法を書いています。これは私のために働きます。お役に立てば幸いです。