使用opencv c++发布二进制应用程序



我有一个c++应用程序,我想作为deb包发布。我遇到的问题是不同计算机上的OpenCV版本不同。当在与编译程序不同的机器上运行程序时,它会给出error while loading shared libraries: libopencv_highgui.so.405: cannot open shared object file: No such file or directory

然后我运行ldd,它返回

linux-vdso.so.1 (0x00007ffc1a7a3000)
libopencv_highgui.so.405 => not found
libopencv_videoio.so.405 => not found
libopencv_imgcodecs.so.405 => not found
libopencv_imgproc.so.405 => not found
libopencv_core.so.405 => not found
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f650380a000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f65037ef000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f65037cc000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f65035da000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f650348b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6503a3e000)

在那台机器上,我有libopencv_core.so.4.2。有没有办法将opencv与应用程序打包,或者让它使用通用的libopencv_core.so,这是指向已安装版本的符号链接?

当在与编译程序不同的机器上运行程序时,它会给出error while loading shared libraries: libopencv_highgui.so.405: cannot open shared object file: No such file or directory.

为了解决这个问题,我无法推荐足够的Exodus:

在没有容器的情况下轻松地重新定位Linux二进制文件及其所有依赖项

Exodus是一个工具,可以轻松地将Linux ELF二进制文件从一个系统迁移到另一个系统。这在机器上没有root访问权限的情况下很有用,或者在给定的Linux发行版上根本没有包可用的情况下也很有用。

最新更新