《编译过程记录与总结》
第一次自己摸索着编译,整理记录一下…首先说明下文件目录:
1.cmakeLists方式
首先在project目录下新建CMakeLists.txt,在source目录下也需新建一个CMakeLists.txt。同时新建一个build目录用来编译。
project目录下的CMakeLists.txt内容:
其中的set()路径这一句最好不要省略,避免找不到opencv的问题。
source下的CMakeLists.txt内容:
编译过程:
(1)在terminal端进入到build文件
cmake …
成功后继续make。最终会在build/source/lib文件夹下生成一个libxxxproject.so的动态库,这个就是可以提供给别人调用的动态库。
2.makefile方式
makefile方式在编译时makefile文件直接放在工程目录下与source,include平级。makefile文件:
打开terminal端进入工程目录之后make,成功后会在bin文件夹里得到libtest.so文件,也就是编译好的动态库。
**注:**在编译前需在ubuntu上配置好opencv的路径。终端执行 sudo gedit /etc/ld.so.conf.d/opencv.conf将opencv动态库所在路径加到文件里保存退出。
opencv的配置可参考:https://blog.csdn.net/Monett0/article/details/120945282
3.动态库调用测试
可以写一个简单的测试代码测试下编译好的动态库。例如测试代码为main.cpp。目录结构如下:
其中lib文件里存放编译好的.so动态库。include文件中存放project工程中的头文件,makefile的内容:
成功后会在bin文件中生成main.out文件,这个就是可执行文件。terminal端进入bin目录,执行./main.out程序就可成功运行啦~
参考链接:
https://www.cnblogs.com/ningmouming/p/7289455.html
https://zhuanlan.zhihu.com/p/441574839
https://blog.csdn.net/weixin_42398658/article/details/121701995