【问题标题】:lopencv_core not found when using opencv使用opencv时找不到lopencv_core
【发布时间】:2023-03-17 01:07:01
【问题描述】:

我通过 home-brew 安装了 opencv3,pkg-config 也可以通过

找到链接器
pkg-config --cflags --libs opencv

输出包含 -lopencv_core,但是当我像这样在 Makefile 中添加它时

CC=clang++
CFLAGS= -Wall -g -std=c++0x
LFLAGS= -I/usr/local/Cellar/opencv3/3.2.0/include -I/usr/local/Cellar/opencv3/3.2.0/bin -I/usr/local/Cellar/opencv3/3.2.0/lib -lopencv_core

CFILES=blah.cpp
HFILES=blah.hpp
OFILES=blah.o

all:    main

%.o:    %.cpp $(HFILES)                                                                                   
        $(CC) -c $(CFLAGS) $< -o $@ $(LFLAGS)

main:   $(OFILES) $(HFILES)
    $(CC) $(CFLAGS) $(OFILES) -o main $(LFLAGS)

它说

ld: library not found for -lopencv_core
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我应该如何将它链接到 gcc?

【问题讨论】:

  • 尝试this answer链接/usr/local/Cellar/opencv3/3.2.0/lib中的所有OpenCV库
  • 您能否将 /usr/local/Cellar/opencv3/3.2.0/lib 中带有“core”的库和符号链接名称添加到您的问题文本中?

标签: c++ opencv gcc makefile linker


【解决方案1】:

假设您希望 CFLAGS 成为编译选项,LFLAGS 成为 是链接的选项,设置:

CFLAGS= -Wall -g -std=c++0x
LFLAGS= -I/usr/local/Cellar/opencv3/3.2.0/include -I/usr/local/Cellar/opencv3/3.2.0/bin -I/usr/local/Cellar/opencv3/3.2.0/lib -lopencv_core

感到困惑。

-I path 选项对编译有意义,对链接无意义。它 告诉预处理器在 path 中搜索你在 #include 中的头文件 源代码。里面会有头文件:

/usr/local/Cellar/opencv3/3.2.0/include

中不会有头文件:

/usr/local/Cellar/opencv3/3.2.0/bin

只是可执行文件,与构建程序无关。并且不会有头文件:

/usr/local/Cellar/opencv3/3.2.0/lib

只是静态和/或动态库。

链接器找不到的库libopencv_core大概是 在/usr/local/Cellar/opencv3/3.2.0/lib。告诉的方式 在那里搜索库的链接器是:

-L/usr/local/Cellar/opencv3/3.2.0/lib -lopencv_core

所以这些设置是有意义的:

CFLAGS := -Wall -g -std=c++0x -I/usr/local/Cellar/opencv3/3.2.0/include
LFLAGS := -L/usr/local/Cellar/opencv3/3.2.0/lib -lopencv_core

但是,编译和链接opencv 程序可能会更好 将其留给pkg-config 以获得正确的选项:

CFLAGS := -Wall -g -std=c++0x $(shell pkg-config --cflags opencv)
LFLAGS := $(shell pkg-config --libs opencv)

【讨论】:

    【解决方案2】:

    -l 选项在所提到的库的常用位置查找。它的位置和外观因操作系统而异,您没有提及。可能可以通过将 -L /usr/local/lib 或其他一些路径添加到您知道库所在的位置来修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 2011-10-05
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多