美文网首页
linux C++调用opencv测试类编译成链接库

linux C++调用opencv测试类编译成链接库

作者: Si莫寒 | 来源:发表于2019-06-17 15:09 被阅读0次

    时隔一年多,一个任务又让我用到了C++调用opencv进行图片的处理,最终编译成链接库。 但是本来也不熟悉也忘得差不多了导致我在环境部署和写makefile都很费劲。

    中间报了好几个错,一直以为是程序原因,其实都是makefile没写好。最后没办法还是找到了一年前别人给我写的makefile照着改了改还真的好了,太感谢帮助过我的人。

    1》错误1:

    原因:  在CFLAGS 后面加上 --std=c++11

    然后make clean -> make

    2》错误2:

    我想现在旧的makefile上的--std=c++11后面加上了-static,之后报错如下。

    3》错误3:

    在网上报读试了各种方法还是不行,最终修改makefile文件如下

    不过还好终于实现了,编译成功。接下来记录下makefile文件。

    # 1、准备工作,编译方式、目标文件名、依赖库路径的定义。

    CC = g++CFLAGS := -Wall -O3 -std=c++0x

    # opencv 头文件和lib路径

    OPENCV_INC_ROOT = /usr/local/include

    OPENCV_LIB_ROOT = /usr/local/lib64

    # ffmpeg 头文件和lib路径

    FFMPEG_INC_ROOT = /usr/local/ffmpeg/include

    FFMPEG_LIB_ROOT = /usr/local/ffmpeg/lib

    # mysql 头文件和lib路径

    MYSQL_INC_ROOT = /usr/include/mysql

    MYSQL_LIB_ROOT = /usr/lib64/mysql

    OBJS = key_Frame.o

    LIB = libKeyFrame.so

    OPENCV_INC= -I$(OPENCV_INC_ROOT)

    FFMPEG_INC= -I$(FFMPEG_INC_ROOT)

    MYSQL_INC = -I$(MYSQL_INC_ROOT)

    INCLUDE_PATH = $(OPENCV_INC)

    INCLUDE_PATH_FFMPEG = $(FFMPEG_INC)

    INCLUDE_PATH_MYSQL = $(MYSQL_INC)

    LIB_PATH = -L$(OPENCV_LIB_ROOT)

    LIB_PATH_FFMPEG = -L$(FFMPEG_LIB_ROOT)

    LIB_PATH_MYSQL = -L$(MYSQL_LIB_ROOT)

    # 依赖的lib名称

    OPENCV_LIB = -lopencv_dnn -lopencv_flann -lopencv_videoio -lopencv_videostab -lopencv_superres -lopencv_video -lopencv_ml -lopencv_photo -lopencv_shape -lopencv_stitching -lopencv_calib3d -lopencv_features2d -lopencv_imgcodecs -lopencv_objdetect -lopencv_core -lopencv_highgui -lopencv_imgproc

    FFMPEG_LIB = -lavcodec -lavformat -lavutil -lavdevice -lavfilter -lswscale -lswresampleMYSQL_LIB = -lmysqlclient

    all : $(LIB)

    %.o : %.cpp

            $(CC) $(CFLAGS) -fpic -c $< -o $@ $(INCLUDE_PATH) $(LIB_PATH) $(OPENCV_LIB) $(INCLUDE_PATH_FFMPEG) $(LIB_PATH_FFMPEG) $(FFMPEG_LIB) $(INCLUDE_PATH_MYSQL) $(LIB_PATH_MYSQL) $(MYSQL_LIB)

    $(LIB) : $(OBJS)

            rm -f $@

            g++ -shared -o $@ $(OBJS)

            rm -f $(OBJS)

    tags :

            ctags -R *

    PHONY:clean

    clean:

            rm -f $(OBJS) $(TAGRET) $(LIB)

    相关文章

      网友评论

          本文标题:linux C++调用opencv测试类编译成链接库

          本文链接:https://www.haomeiwen.com/subject/ilvafctx.html