Cmake
下载非常慢,目前没有找到好的解决方法。
https://cmake.org/download/
https://cmake.org/files/v3.18/(个人推荐)
4. 选择makefiel类型
5. 配置编译链等
6. 下一步
7. 标签
8. 设置交叉编译工具链
9. Finsh
10. Configue(配置菜单),如配置出错则会标为红色
11. Generate(产生Makefile)
Cmake
自动根据会根据 CMakeLists.txt
及 cmake-gui
的配置生成 Makefile
打开cmd
,执行 make
编译,等待编译完成即可。
这里不建议采用 make -j4
/ make -j8
等加速编译
主要用在 多核CPU
上, make -j4
表示 make
最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源
。
如果项目的 Makefile
不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
所以并不建议大家使用。
编译过程:
LinkingCXXsharedlibrary../../lib/libopencv_imgcodecs.so c:/arm123/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/b in/ld.exe: ../../3rdparty/lib/libIlmImf.a(ImfHeader.cpp.obj): relocation R_AARCH64_ADR_PREL_PG_HI21 against external symbol `_ZTVNSt7__cxx1119basic_ostringstrea mIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21'can not be used when making a shared object; recompile with -fPIC
解决:
在 cmake-gui
中配置
CMAKE_C_FLAGS
设置为 -O3 -fPIC
CMAKE_CXX_FLAGS
设置为 -O3 -fPIC
解决:
找到 3rdparty/libpng/CMakeLists.txt
在最上面加上
SET(ARM 1)
SET(ENABLE_NEON 1)
…/…/lib/libopencv_core.so: undefined reference to pthread_mutexattr_destroy' ../../lib/libopencv_imgcodecs.so: undefined reference to
pthread_create’
…/…/lib/libopencv_core.so: undefined reference to dlopen' ../../lib/libopencv_core.so: undefined reference to
pthread_mutex_trylock’
…/…/lib/libopencv_core.so: undefined reference to dlsym' ../../lib/libopencv_core.so: undefined reference to
pthread_mutexattr_settype’
…/…/lib/libopencv_imgcodecs.so: undefined reference to pthread_join' ../../lib/libopencv_core.so: undefined reference to
pthread_mutexattr_init’
collect2.exe: error: ld returned 1 exit status
解决:
CMAKE_EXE_LINKER_FLAGS
加上 -pthread -lrt
…/…/lib/libopencv_core.so: undefined reference to dlopen' ../../lib/libopencv_core.so: undefined reference to
dlsym’
collect2: ld returned 1 exit status
解决:
CMAKE_EXE_LINKER_FLAGS
= -pthread -lrt -ldl
解决:
我是关闭了以下两个选择才不会卡住的…原因未知
WITH_CUDA
WITH_WEBBP
大恒智星 Pallas_Qt_mingw32_SDK 开发环境搭建
INCLUDEPATH += $$PWD/../../../DH_Opencv310\OpenCV\include
INCLUDEPATH += $$PWD/../../../DH_Opencv310\OpenCV\include\opencv
INCLUDEPATH += $$PWD/../../../DH_Opencv310\OpenCV\include\opencv2
DEPENDPATH += $$PWD/../../../DH_Opencv310/OpenCV/lib \
LIBS += -L$$PWD/../../../DH_Opencv310/OpenCV/lib \
-lopencv_shape -lopencv_stitching -lopencv_objdetect \
-lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui \
-lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc \
-lopencv_flann -lopencv_core
#include
#include
#include
#include
using namespace cv;
int main(int argc, char *argv[])
{
qDebug() << "OPenCV Version is " << CV_VERSION;
QCoreApplication a(argc, argv);
return a.exec();
}
warning: ../../lib/libopencv_video.so, needed by D:/Program Files/Qt5.8/daheng_opencv_test/../../../DH_Opencv310/OpenCV/lib/libopencv_shape.so, not found (try using -rpath or -rpath-link)
原因:
编译后的 opencv动态库
自带路径 [ ../../lib/libopencv_imgproc.so];
使用命令查看:readelf -d libopencv_imgproc.so
如果觉得麻烦,pro
的 LIBS
末 加上 -rpath / -rpath-link
即可
Opencv 交叉编译
嵌入式开发之Opencv(一)交叉编译
linux编译命令——make -j8
opencv海思平台移植解决warning: …/…/lib/libopencv_imgproc.so, needed by …/lib/libopencv_imgcodecs.so, not
arm平台交叉编译opencv出现 undefined reference to `png_init_filter_functions_neon’