web-dev-qa-db-ja.com

lib1394 i386(32ビット)バージョンをUbuntu 11.10 AMD64にインストールする方法

ライブラリlibraw1394.soの32ビットバージョンが必要と思われる、firewire用の古い取得プログラムがあります。

問題についてのいくつかのメモ:

uname -mの出力は、ubuntu 64ビットがインストールされていることを示していると思います。

$ 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(32ビット)バージョンをインストールする
解決策2)アプリケーションを再度コンパイルします

私は投稿を読んでいて、GetLibs、ia32-libs、multiarchのいずれかを使用する必要があるようです。問題へのフィードバックは役に立ちます!どうもありがとう!

ジェスペスタナ

1
jespestana

まず、あなたの言うとおり、システムは64ビットアーキテクチャを使用しています。

あなたの問題の解決策はライブラリのi386(32ビット)バージョンをインストールするである可能性があると言ったように、その方法を説明しました。

  1. ターミナルを開く Ctrl+Alt+T
  2. 次のコマンドを入力します:Sudo apt-get install libraw1394-11:i386

これで、32ビットバージョンのlibrawライブラリがインストールされました。

1
Lucio