У меня есть старая программа приобретения для firewire, которому, кажется, нужна версия на 32 бита библиотеки libraw1394.so
.
Некоторые примечания, о проблеме:
Я думаю что вывод uname -m
указывает, что мне установили человечность 64bits:
$ 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-освобождает любую мультидугу. Любая обратная связь к проблеме будет полезна!Большое спасибо!
jespestana
В первую очередь, Вы правы, Ваша система использует архитектуру на 64 бита.
Поскольку Вы сказали, что решением для Вашей проблемы могла быть установка i386 версия (на 32 бита) библиотеки, я сказал Вам, как сделать это:
sudo apt-get install libraw1394-11:i386
Теперь необходимо было установить версию на 32 бита libraw
библиотека.