[英]Write makefile for program using OpenCV, link error
我正在尝试编写一个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)'
您的库似乎不太正确。 pkg-config
可能会在这里帮助您:
CFLAGS=-c -Wall `pkg-config --cflags opencv`
LIBS=`pkg-config --libs opencv`
如果由于某种原因未调用opencv,则可以在$ pkg-config --list-all
或$ locate opencv.pc
中找到$ locate opencv.pc
来查找文件(我不太确定本地安装会如何处理) 。)如果找到.pc
文件并将其包含在pkg-config
的搜索路径中,则可以设置PKG_CONFIG_PATH
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.