交叉编译opencv应用,未定义引用 [英] Cross compiling opencv app, undefined reference to

查看:408
本文介绍了交叉编译opencv应用,未定义引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从Ubuntu 14.04交叉编译一个非常简单的适用于ARM平台的OpenCV应用程序

I'm trying to cross compile a really simple OpenCV app for ARM platform from Ubuntu 14.04

#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>

using namespace cv;

using namespace std;

main(int argc, char *argv[])
{
    Mat img = imread("/home/linaro/Desktop/test.jpg", CV_LOAD_IMAGE_COLOR), grey_img;

    if(!(img.data))
    {
        printf("cannot read image data");
        exit(1);
    }

    cvtColor(img, grey_img, CV_BGR2GRAY);

    imwrite("/home/linaro/Desktop/grey_test.jpg", grey_img);
}

我尝试这样编译

arm-linux-gnueabi-g++ opencv_grey.cpp -o grey -I /home/me/c_projects/arm_platform/armcv_build/install/include/opencv -I /home/me/c_projects/arm_platform/armcv_build/install/include/opencv2  -L /home/me/c_projects/arm_platform/armcv_build/install/lib -lopencv_core -lopencv_imgproc -lopencv_highgui

但是我得到了错误

/tmp/ccdN4trw.o: In function `main':
opencv_grey.cpp:(.text+0x84): undefined reference to `cv::imread(std::string const&, int)'
opencv_grey.cpp:(.text+0x168): undefined reference to `cv::imwrite(std::string const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'
collect2: error: ld returned 1 exit status

这些应该是我链接的opencv_core.

These should be opencv_core which I've linked.

includes和库是使用CMake(来自OpenCV 3.0.0.zip)构建和安装的,它们肯定在那里,我可以看到它们!

The includes and libraries were built and installed using CMake (from the OpenCV 3.0.0.zip), and they're definitely there, I can see them!

请帮助,为什么会这样?

Help please, why is this happening?

推荐答案

也许您可以尝试在之后添加所有-lopencv_xxx:

Maybe you can try to add all -lopencv_xxx after:

arm-linux-gnueabi-g++ opencv_grey.cpp -o grey -I /home/me/c_projects/arm_platform/armcv_build/install/include/opencv -I /home/me/c_projects/arm_platform/armcv_build/install/include/opencv2  -L /home/me/c_projects/arm_platform/armcv_build/install/lib -lopencv_core -lopencv_imgproc -lopencv_highgui

这篇关于交叉编译opencv应用,未定义引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆