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