【问题标题】:About Makefile can't find libraries关于 Makefile 找不到库
【发布时间】:2013-12-29 08:15:38
【问题描述】:

例外在这里:

g++ -L/usr/local/lib -I./include -I. -lopencv_core -lopencv_highgui -lopencv_imgproc main.o ColorTransfer.o
main.o: In function `showImg(std::string, cv::Mat, int)':
main.cpp:(.text+0x21): undefined reference to `cv::namedWindow(std::string const&, int)'
main.cpp:(.text+0x34): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
main.cpp:(.text+0x75): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
main.cpp:(.text+0x9d): undefined reference to `cv::waitKey(int)'
main.o: In function `main':

Makefile 在这里:

CC=g++
FLAGS=-L./lib -I./include -I. -lopencv_core -lopencv_highgui -lopencv_imgproc

all: ColorTransfer

ColorTransfer: main.o ColorTransfer.o
    $(CC) $(FLAGS) main.o ColorTransfer.o -o ColorTransfer

main.o: main.cpp 
    $(CC) $(FLAGS) -c main.cpp -o main.o

ColorTransfer.o: ColorTransfer.cpp ColorTransfer.h
    $(CC) $(FLAGS) -c ColorTransfer.cpp -o ColorTransfer.o

clean :
    rm -rf main.o ColorTransfer.o

当前目录包含名为lib的目录,其中有opencv库。

【问题讨论】:

  • make 正在执行您错误地要求它执行的操作。但是g++ 在您的Makefile 中被错误地调用;不是make,而是g++,它没有找到库...

标签: opencv makefile g++


【解决方案1】:

在您的文件夹中:

 /lib

你必须确定有:

 opencv_core.so
 opencv_highgui.so
 opencv_imgproc.so

你的 LD_LIBRARY_PATH 指向这个文件夹。否则,您必须将其导出:

export LD_LIBRARY_PATH=/lib

你下载过opencv源码还是预编译的?您是否配置了动态链接器运行时绑定?

sudo ldconfig

编辑

否则,请尝试检查out这个解决方案!

【讨论】:

  • 谢谢。是的,我已经使用 IDE(Eclipse+CDT) 运行了代码,但我想使用 Makefile 编译代码。我尝试了你的建议,但它也不起作用。
【解决方案2】:

你真的应该注意g++ 的参数顺序;这很重要(图书馆应该以良好的顺序排在最后 - 最高级别到最低级别)。

使用make -p 了解make 已知的规则......然后按照以下方式改进您的Makefile

 CXX=g++
 CXXFLAGS= -I./include -I. -g -Wall
 LDLIBS= -L./lib -lopencv_core -lopencv_highgui -lopencv_imgproc

 all: ColorTransfer

 ColorTransfer: main.o ColorTransfer.o
           $(LINK.cc)  $^ $(LDLIBS) -o $@

 # etc....

我让你更正Makefile 的其他行...另请参阅this answer ...

我更正了上面的 make 规则:$^ 必须在 $(LDLIBS) 之前!

顺便说一句,remake 是调试Makefile-s 的好工具;例如,remake -x

【讨论】:

    猜你喜欢
    • 2018-08-22
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多