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

2019-06-17  本文已影响0人  Si莫寒

时隔一年多,一个任务又让我用到了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)

上一篇下一篇

猜你喜欢

热点阅读