BeagleBone Black和Ubuntu 12.04(精确穿山甲)上的OpenCV链接问题

时间:2013-08-30 11:23:46

标签: opencv ubuntu linker arm beagleboneblack

BeagleBone Black Ubuntu 12.04(精确穿山甲)。我使用以下命令从apt下载了OpenCV库:

sudo apt-get install -y libopencv-dev

此命令安装了必需的标头和库。然后我编译了我自己的程序,它只显示一个带有以下命令的窗口:

gcc -I/usr/inlcude/ -I/usr/include/opencv2/ -L/usr/lib/ -lopencv_core -lopencv_highgui -lm opencv_test.c -o test

几秒钟后,它显示无法找到带有' lrint'还有更多,最后显示了cvNameWindow,cvShowImage等的链接错误。

我认为这可能是已安装库的问题。我下载了最新的OpenCV Source,在我的Ubuntu机器上用-DUSE_NEON=ON标志交叉编译了OpenCV wiki上提供的代码。我将这些头文件和库复制到格式为ext4的额外分区中。我再次发出了以下命令:

gcc -I/usr/inlcude/ -I/media/misc/opencv/include/opencv/ -I/media/misc/opencv/include/ -L/usr/lib/ -L/media/misc/opencv/lib/ -lopencv_core -lopencv_highgui -lm opencv_test.c -o test

注意:/ media / misc /是额外的分区。

此命令为我提供与之前相同的输出。现在我来到了这一点。也许我没有发出正确的命令。

此外我将gcc更改为g ++,它给我的错误如下:

unable to find reference cvNamedWindow
unable to find reference cvShowImage

2 个答案:

答案 0 :(得分:0)

您的链接命令包含:-lopencv_core -lopencv_highgui -lm opencv_test.c

这是错误的参数顺序。要了解原因,请阅读this

  

如果我将此命令发送到我现有的ubuntu x82机器,它编译得非常好......

你的意思是“它链接非常好”。

这是由coincidence发生的,不是因为你的链接命令是正确的。

答案 1 :(得分:0)

我不小心编译了OpenCV tarball中给出的示例代码,并编译了该代码。然后我查看了构建脚本,并找到了以下命令:

g++ `pkg-config --cflags opencv` $1 -o $2 `pkg-config --libs opencv`

它实际上是一个脚本。 $1是第一个参数,即.cpp文件,$2是输出文件的第二个参数。我使用这个脚本如下:

./build_cv.sh opencv_test.cpp test

注意:确保脚本文件“build_cv.sh”具有执行权限。如果没有,请输入以下命令更改其权限:

chmod +x build_cv.sh

现在问题。我在第一次尝试时给出了头文件和库的位置。我必须在给出源文件之前给出头的位置,并在输出文件之后给出库的位置。这是我的经历;也许其他人有另一种编译代码的方法。