如何在gcc上编译Opencv API

时间:2013-12-04 03:03:43

标签: opencv gcc header linker

我正在尝试编译一个包含Opencv库API的.C文件 似乎编译器没有找到API。我使用普通命令进行编译

   gcc new.c -c
   gcc new.o -o new1 -l highgui  

highgui是一个.h文件,它从Opencv lib调用其他.h文件

我认为我遇到与下面的线程相同的问题,因为我得到几乎相同的错误。

GCC: How can I make this compiling and linking work?

3 个答案:

答案 0 :(得分:6)

您可以使用 pkg-config 命令获取编译器/链接器选项。喜欢这个

gcc `pkg-config --cflags opencv` `pkg-config --libs opencv` new.c

请注意上面的标点符号是“不是”。

或者您可以使用 CMake 。像这样写 CMakeLists.txt

cmake_minimum_required (VERSION 2.6)
project (new1)
find_package (OpenCV REQUIRED)
include_directories (${OpenCV_INCLUDE_DIRS})
add_executable (new1 new.c)
target_link_libraries (new1 ${OpenCV_LIBS})

然后你可以像这样构建

mkdir build
cd build
cmake -DOpenCV_DIR=<the-directory-contating-OpenCVConfig.cmake> ..
make

答案 1 :(得分:1)

尝试以下命令

gcc -I/usr/local/include/opencv -I/usr/local/include/opencv2 -L/usr/local/lib/ -g -o binary  main.c -lopencv_core -lopencv_imgproc -lopencv_highgui

假设在/ usr / local目录下安装了OpenCV。

答案 2 :(得分:0)

尝试编写Harris命令。 它告诉您的编译器在/usr/local/include/opencv/usr/local/include/opencv2目录(-I switch)中另外查找头文件,并在/usr/local/lib/-L)中查找库。接下来,它告诉链接器-l切换到链接库opencv_core等...

当您遇到此类问题时,您需要找到库文件,告诉编译器它们的路径并告诉他要链接哪些库,例如opencv_core而不是libopencv_core {1}}。