【发布时间】:2017-01-23 18:45:30
【问题描述】:
我想在没有安装任何库的不同计算机上运行我的程序。我使用 openCV 在 QT 中构建我的程序,并将所有需要的 .so 库复制到包含我所有文件的文件夹中。接下来我将 QT .pro 中的路径更改为
INCLUDEPATH += ../
LIBS += -L../ -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_core.
我在我的计算机 (linux) 上编译了它并且它可以工作,但我希望它可以在另一台计算机上工作而无需编译。在我朋友的电脑上,二进制不起作用。我得到错误:
./displayImage:加载共享库时出错:libopencv_highgui.so.3.1:无法打开共享对象文件:没有这样的文件或目录
【问题讨论】:
-
您确保实际运送图书馆的所有部分吗?显然它找不到 opencv_highgui SO。可能其他 opencv 库需要 opencv_highgui 库(readelf 在您的 .elf 上运行时可能不会报告它),或者它正在寻找没有主要/次要版本的 libopencv_xyz.so 库文件名(“长名称”通常用于 /usr/lib 中的符号链接)。 readelf 工具在输出文件上的输出是什么?
-
readelf 文件的整个输出我添加到带有项目文件 libopencv_highgui.so.3.1 libopencv_imgcodecs.so.3.1 [libopencv_imgcodecs.so.3.1 libopencv_core.so.3.1 ...的文件夹中
-
如果您指定系统规格和版本可能会有所帮助。
标签: qt opencv dynamic compilation