32ビットの共有ライブラリをインストールしていますが、pogoplugをインストールしようとするとこのエラーが発生します:
./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64
プログラムを32ビットライブラリからロードするために他に何かする必要がありますか?
今年初めに同様の質問がありましたが、回答はありませんでした。
承認された回答:
一部のライブラリでは、32ビットライブラリと64ビットライブラリの両方を64ビットシステムにインストールすることができます。これは、ia32-libs
から入手できます。 Ubuntu10.04以前のパッケージ。 ia32-libs
のファイルリストによると 、libfuse.so.2
はありません ファイルが含まれています。つまり、一度に両方のアーキテクチャをインストールすることはできません。
Ubuntu 11.10 Oneiric以降、パッケージで「マルチアーチ」と呼ばれるさまざまなアーキテクチャの同時インストールが可能になりました。残念ながら、libfuse2
のファイルリストを信じるなら Oneiricでは、このパッケージはまだ移行されていません。これは、パッケージの依存関係から判断できます。パッケージがmultiarch-support
に依存している場合 (libdrm2のように)、マルチアーチサポートをサポートしています。ただし、これはではありません パッケージを複数のアーキテクチャに同時にインストールできることを保証します。
パッケージのマルチアーチ機能についてローカルキャッシュにクエリを実行するには、libc6
と言います。 、実行:
apt-cache show libc6 | grep ^Multi-Arch:
このコマンドの場合、出力はMulti-Arch: same
です。 。つまり、パッケージの32ビットバージョンと64ビットバージョンの両方を一度にインストールできます。出力がない場合、パッケージはマルチアーチサポートの準備ができていません。他の可能な値はforeign
です (同時インストールはできませんが、他のアーキテクチャの依存関係を満たすために使用できます)およびallowed
(iirc、一度にインストールできるパッケージは1つだけですが、そのパッケージを使用して他のパッケージの依存関係を満たすことができます)
次のコマンドを使用して、64ビットシステムに32ビットパッケージをインストールできるはずです。
sudo apt-get install packagename:i386
64ビットマシン用の32ビットlibfuseの構築
32ビットヒューズライブラリはia32-libs
に付属していないため 、自分で作成する以外に選択肢はありません。
-
ヒューズのビルド依存関係をインストールし、ソースコードを取得します:
sudo apt-get install ia32-libs libc6-i386 sudo apt-get build-dep fuse apt-get source fuse
-
ソースツリーを構成し、fuseをビルドします(必要に応じてディレクトリ名を調整します):
cd fuse-2.8.4 CFLAGS=-m32 ./configure --host=i386-linux-gnu make -j 50
-
32ビットヒューズライブラリをインストールします(それに応じてバージョンを調整します):
sudo ln -s libfuse.so.2.8.4 /usr/local/lib/libfuse.so.2 sudo install -m644 lib/.libs/libfuse.so.2.8.4 /usr/local/lib/
-
リンカキャッシュを更新します:
sudo ldconfig
-
(オプション)ソースファイルを削除します:
cd .. rm -r fuse-2.8.4