我有一个旧的火线采集程序,似乎需要 32 位版本的库libraw1394.so
。
关于该问题的一些说明:
我认为输出uname -m
表明我已经安装了 64 位 ubuntu:
$ uname -m
x86_64
如果我在我的应用程序上执行 ldd,输出表明未找到 lib1394.so:
$ ldd ./smallv
linux-gate.so.1 => (0xf76e9000)
libsvs.so => /usr/local/svs/bin/libsvs.so (0xf76c7000)
libsvscalc.so => /usr/local/svs/bin/libsvscalc.so (0xf76b7000)
libsvscap.so => /usr/local/svs/bin/libsvscap.so (0xf76a0000)
libfltk.so.1.1 => /usr/local/svs/bin/libfltk.so.1.1 (0xf761a000)
libfltk_gl.so.1.1 => /usr/local/svs/bin/libfltk_gl.so.1.1 (0xf7612000)
libGLU.so.1 => /usr/lib32/libGLU.so.1 (0xf7573000)
libGL.so.1 => /usr/lib32/nvidia-current/libGL.so.1 (0xf74a1000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf73b5000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf739a000)
libm.so.6 => /lib32/libm.so.6 (0xf7370000)
libc.so.6 => /lib32/libc.so.6 (0xf71f1000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf71d3000)
libdcap.so => /usr/local/svs/bin/libdcap.so (0xf71c5000)
libraw1394.so.8 => not found
libXext.so.6 => /usr/lib32/libXext.so.6 (0xf71b2000)
libX11.so.6 => /usr/lib32/libX11.so.6 (0xf707c000)
libnvidia-tls.so.280.13 => /usr/lib32/nvidia-current/tls/libnvidia-tls.so.280.13 (0xf7079000)
libnvidia-glcore.so.280.13 => /usr/lib32/nvidia-current/libnvidia-glcore.so.280.13 (0xf5767000)
librt.so.1 => /lib32/librt.so.1 (0xf575e000)
libdl.so.2 => /lib32/libdl.so.2 (0xf5759000)
/lib/ld-linux.so.2 (0xf76ea000)
libraw1394.so.8 => not found
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf573a000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf5735000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf572e000)
当我运行该应用程序时出现以下错误:
$ ./smallv
./smallv: error while loading shared libraries: libraw1394.so.8: wrong ELF class: ELFCLASS64
该库位于/usr/lib/
但它是 ELF63 版本:
$ readelf -h /usr/lib/libraw1394.so
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x4460
Start of program headers: 64 (bytes into file)
Start of section headers: 58768 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 7
Size of section headers: 64 (bytes)
Number of section headers: 26
Section header string table index: 25
我一直在各种帖子中寻找解决方案。所以,我认为我有应用程序的源代码,所以我应该能够编译它。所以我有解决方案,但我不知道如何执行它们:
解决方案 1)安装 i386(32bits)版本的库
解决方案 2)重新编译应用程序
我一直在阅读帖子,似乎我应该使用 GetLibs、ia32-libs 或 multiarch。请对问题提供任何反馈!非常感谢!
耶斯佩斯塔纳
答案1
首先,你是对的,你的系统使用的是64位架构。
正如你所说,解决你的问题的方法可能是安装 i386(32位)版本的库,我已经告诉你怎么做了:
- 打开终端Ctrl++AltT
- 输入此命令:
sudo apt-get install libraw1394-11:i386
现在您应该已经安装了32位版本的库libraw
。