我安装了 32 位共享库,但在尝试安装 pogoplug 时仍然出现此错误:
./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64
Run Code Online (Sandbox Code Playgroud)
我还需要做些什么才能让程序从 32 位库加载?
今年早些时候有人问过类似的问题,但没有得到任何答复。
对于某些库,可以在 64 位系统上同时安装 32 位和 64 位库。这可以通过ia32-libsUbuntu 10.04 及之前的软件包获得。根据的文件列表ia32-libs,不libfuse.so.2包含文件。这意味着您不能同时安装两种架构。
从 Ubuntu 11.10 Oneiric 开始,软件包可以允许同时安装不同的架构,称为“多架构”。不幸的是,如果我相信Oneiric 上的文件列表libfuse2,这个包还没有被转换。这可以从包依赖关系中确定:如果一个包依赖multiarch-support(如libdrm2),它支持多架构支持。但是,这并不能保证可以同时为多个体系结构安装该软件包。
要查询本地缓存以获取包的多架构功能libc6,请运行:
apt-cache show libc6 | grep ^Multi-Arch:
Run Code Online (Sandbox Code Playgroud)
对于此命令,输出为Multi-Arch: same. 这意味着可以同时安装 32 位和 64 位版本的软件包。如果没有输出,则该包尚未准备好支持多架构。其他可能的值是foreign(不可共同安装,但可用于满足其他架构的依赖)和allowed(iirc,一次只允许安装一个包,但该包可用于满足其他架构的依赖)包)
您应该能够在 64 位系统上安装 32 位软件包:
sudo apt-get install packagename:i386
Run Code Online (Sandbox Code Playgroud)
由于 32 位保险丝库未随 提供ia32-libs,因此您别无选择,只能自己构建。
安装 fuse 的构建依赖项并获取源代码:
sudo apt-get install ia32-libs libc6-i386
sudo apt-get build-dep fuse
apt-get source fuse
Run Code Online (Sandbox Code Playgroud)配置源树并构建熔断器(如果需要,调整目录名称):
cd fuse-2.8.4
CFLAGS=-m32 ./configure --host=i386-linux-gnu
make -j 50
Run Code Online (Sandbox Code Playgroud)安装 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/
Run Code Online (Sandbox Code Playgroud)更新链接器缓存:
sudo ldconfig
Run Code Online (Sandbox Code Playgroud)(可选)删除源文件:
cd ..
rm -r fuse-2.8.4
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
15749 次 |
| 最近记录: |