Ошибка при загрузке разделяемых библиотек: внутренняя ошибка

Я перекрестно скомпилировал OpenCV для руки в соответствии с этим руководством и построил эту программу .

Когда я впервые запустил его так:

./DisplayImage image.png 

Я получил:

./DisplayImage: ошибка при загрузке разделяемых библиотек:
libopencv_highgui.so.3.1: невозможно открыть файл общих объектов: нет такого файла или каталога

Поэтому я решил, что ему нужна библиотека libopencv_highgui.so.3.1 . Поэтому я добавил все эти библиотеки в /lib :

 (1) libopencv_highgui.so (2) libopencv_highgui.so.3.1 (3) libopencv_highgui.so.3.1.0 

символические ссылки: (1) -> (2) -> (3)

Но теперь я получаю:

./DisplayImage: ошибка при загрузке разделяемых библиотек:
lib / libopencv_highgui.so.3.1: внутренняя ошибка

Я запустил file как в библиотеке, так и в исполняемом файле, чтобы проверить их информацию, и это результат:

 .../opencv/platforms/linux/my_build/lib$ file libopencv_highgui.so.3.1.0 libopencv_highgui.so.3.1.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=1107ba22b36437bedb37dbfe0250626c14759be9, not stripped .../opencv_sample$ file DisplayImage DisplayImage: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=aef57fe79d0928ca3afdff8d1b65268e1ad72e77, not stripped 

редактировать:
Запуск readelf -d DisplayImage | grep NEEDED readelf -d DisplayImage | grep NEEDED производит:

  0x00000001 (NEEDED) Shared library: [libopencv_highgui.so.3.1] 0x00000001 (NEEDED) Shared library: [libopencv_imgcodecs.so.3.1] 0x00000001 (NEEDED) Shared library: [libopencv_core.so.3.1] 0x00000001 (NEEDED) Shared library: [libstdc++.so.6] 0x00000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x00000001 (NEEDED) Shared library: [ld-linux-armhf.so.3] 

Я нашел их всех на моей цели, кроме ld-linux-armhf.so.3 .

Что может вызвать эту проблему «внутренней ошибки»?

  • Поток камеры IDS uEye
  • Изображение Docker с OpenCV и FFPMEG
  • ffmpeg веб-камера для драйвера устройства, выход 8-битный оттенки серого
  • Скажите Python использовать альтернативную библиотеку
  • установить opencv-2.4-9 на centos 6.5 с поддержкой cuda 5.5
  • opensuse tumbleweed не может установить последнюю версию opencv
  • Выполнение процесса несколько раз в одно и то же время
  • Не удалось импортировать cv2 в python2
  • One Solution collect form web for “Ошибка при загрузке разделяемых библиотек: внутренняя ошибка”

    когда бинарный файл скомпилирован, он может использовать разделяемые библиотеки, эти библиотеки являются ссылками с номером версии, чтобы вы могли поддерживать поддерживаемый библиотечный модуль.

    иногда вы можете уйти с сим, связывающим новую библиотеку с более старым именем, двоичный код будет пытаться использовать этот.

    однако это не означает, что двоичный файл будет поддерживать эту версию. Некоторые функции могут быть изменены, некоторые функции удалены или добавлены, и так далее.

    Поэтому я бы предложил перекомпилировать двоичный файл с более новой версией libary, во время компиляции будут помечены несовместимости.

    вы можете видеть зависимости библиотек с помощью ldd.

    Пример;

     $ ldd /bin/ls linux-vdso.so.1 (0x00007ffc65ff3000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f9033f91000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9033bf1000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9033979000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9033771000) /lib64/ld-linux-x86-64.so.2 (0x0000558f25845000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9033551000) 

    Edit: ps … вы не можете просто копировать файлы через их собственные зависимости. для вашей компиляционной машины вам понадобятся аналогичные версии lib для компиляции.

    Linux и Unix - лучшая ОС в мире.