如何在 ubuntu 11.10 amd64 上安装 lib1394 i386(32 位)版本

如何在 ubuntu 11.10 amd64 上安装 lib1394 i386(32 位)版本

我有一个旧的火线采集程序,似乎需要 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位)版本的库,我已经告诉你怎么做了:

  1. 打开终端Ctrl++AltT
  2. 输入此命令:sudo apt-get install libraw1394-11:i386

现在您应该已经安装了32位版本的库libraw

相关内容