我正在尝试编写一个makefile来使用OpenCV编译一些代码,这是我的makefile:
CC=g++
CFLAGS=-c -Wall -I/home/me/OpenCV2/opencv-2.4.11/include
LIBS=-L/home/me/OpenCV2/opencv-2.4.11/build/lib/ -lopencv_features2d -lopencv_imgproc -lopencv_core -lopencv_legacy -lopencv_nonfree -lopencv_ocl -lopencv_contrib
all: code
code: codeUtils.o codeLibs.o code.o
$(CC) $(LIBS) codeUtils.o codeLibs.o code.o -o code
code.o:code.cpp
$(CC) $(CFLAGS) $(LIBS) code.cpp
codeUtils.o: codeUtils.cpp
$(CC) $(CFLAGS) $(LIBS) codeUtils.cpp
codeLibs.o: codeLibs.cpp
$(CC) $(CFLAGS) $(LIBS) codeLibs.cpp
然而,它产生了许多未定义的引用'错误,哪个部分在makefile中是错误的?感谢
错误看起来像这样:
codeUtils.o: In function `getGradients(cv::Mat const&, cv::Mat&, cv::Mat&)':
codeUtils.cpp:(.text+0x23): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
codeUtils.cpp:(.text+0x36): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
codeUtils.cpp:(.text+0x6f): undefined reference to `cv::Sobel(cv::_InputArray const&, cv::_OutputArray const&, int, int, int, int, double, double, int)'
codeUtils.cpp:(.text+0x82): undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
codeUtils.cpp:(.text+0x95): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
codeUtils.cpp:(.text+0xce): undefined reference to `cv::Sobel(cv::_InputArray const&, cv::_OutputArray const&, int, int, int, int, double, double, int)'
codeUtils.o: In function `getHOGatKey(cv::KeyPoint const&, cv::Mat const&, cv::Mat const&, int, int, cv::Mat&)':
codeUtils.cpp:(.text+0x139): undefined reference to `cv::Mat::zeros(int, int, int)'
答案 0 :(得分:0)
你的图书馆似乎不太对劲。 pkg-config
可能会帮助您:
CFLAGS=-c -Wall `pkg-config --cflags opencv`
LIBS=`pkg-config --libs opencv`
如果由于某种原因没有调用opencv,你可能会在$ pkg-config --list-all
或$ locate opencv.pc
中找到它来查找文件(我不太确定它将如何处理本地安装。 )如果您找到PKG_CONFIG_PATH
文件并希望将其包含在.pc
的搜索路径中,则可以设置pkg-config
。