ldd файл не найден для приложения opencv и библиотеки действительно присутствуют в системе - PullRequest
0 голосов
/ 23 января 2020

Я кросс-скомпилировал Opencv (для ручного кросс-компилятора), а затем создал приложение opencv и скомпилировал его, используя gnueabihf g ++ compiler. Компиляция прошла успешно после установки правильных включений opencv и файлов lib. Теперь я скопировал это приложение и зависимые файлы lib в целевую систему и попытался запустить приложение, но оно не смогло жаловаться на отсутствие общих библиотек. Библиотеки копируются в обе папки / usr / lib и / lib, а команда ldconfig grep перечисляет мне необходимые библиотеки. Однако, когда я выполняю ldd моего приложения. для яйца ldd opencvapp - возвращает следующее

   libopencv_core.so.4.2 => not found
   libopencv_highgui.so.4.2 => not found
   libopencv_imgproc.so.4.2 => not found
   libopencv_imgcodecs.so.4.2 => not found
   libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6e6a000)
   libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6df0000)
   libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6dc7000)
   libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6cd9000)
   /lib/ld-linux-armhf.so.3 (0x7f5c0000)```


   These libraries are present in /usr/lib as well as /lib.
   giving the following command 
   **ldconfig -v | grep libopencv** returns
   ```ldconfig: Path `/lib/arm-linux-gnueabihf' given more than once
   ldconfig: Path `/usr/lib/arm-linux-gnueabihf' given more than once
   ldconfig: Path `/usr/lib' given more than once
   ldconfig: /lib/arm-linux-gnueabihf/ld-2.24.so is the dynamic linker, ignoring   
   libopencv_core.so.4.2 -> libopencv_core.so.4.2.0 (changed)
   libopencv_dnn.so.4.2 -> libopencv_dnn.so.4.2.0
   libopencv_highgui.so.4.2 -> libopencv_highgui.so.4.2.0
   libopencv_imgcodecs.so.4.2 -> libopencv_imgcodecs.so.4.2.0
   libopencv_imgproc.so.4.2 -> libopencv_imgproc.so.4.2.0
   libopencv_core.so.4.2 -> libopencv_core.so.4.2.0
   libopencv_dnn.so.4.2 -> libopencv_dnn.so.4.2.0
   libopencv_highgui.so.4.2 -> libopencv_highgui.so.4.2.0
   libopencv_imgcodecs.so.4.2 -> libopencv_imgcodecs.so.4.2.0
   libopencv_imgproc.so.4.2 -> libopencv_imgproc.so.4.2.0```

   executing file on libopencv_core.so.4.2 gives
   ```ELF 32-bit LSB shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=e58d057c66950497a165a7ee27f87c01941c3724, not stripped ```

   But however executing file on opencvapp returns
   ```ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=a3469006c710d3abe44b16250936162a1e28ee43, not stripped ``` 

   Please notice that the difference between the application and the shared library is SYSV vs GNU/LINUX. Will that be the issue?


...