opencv arm-linux交叉编译
opencv arm-linux交叉编译opencv2.4.13该版本按照opencv官方文档编译,提示 修改platform/linux/arm-gnueabi.toolchain.cmake,改为如下:
执行cmake: cmake -DCMAKE_MAKE_PROGRAM:PATH=/usr/bin/make -DCMAKE_INSTALL_PREFIX=arm-install -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../.. CMAKE_MAKE_PROGRAM 指定绝对路径。CMAKE_INSTALL_PREFIX指定安装目录,目录下的lib就是我们要拷贝到arm上的库。 最后成功编译。 编译opencv测试程序重命名安装目录/lib/pkgconfig下的opencv.pc为arm-opencv.pc,编辑文件,Name项改为arm-opencv. 修改/etc/bash.bashrc : vim /etc/bash.bashrc 添加:opencv安装目录/lib/pkgconfig PKG_CONFIG_PATH=$PKG_CONFIG_PATH:arm-install/lib/pkgconfig Export PKG_CONFIG_PATH source /etc/bash.bashrc 测试程序: #include "opencv/cv.h" #include "opencv/highgui.h" #include <iostream> using namespace std; using namespace cv; int main(int argc,char *argv[]) { IplImage* image = cvLoadImage("test.png"); if(image == NULL) { cout<<"loud image fail"<<endl; return -1; } cout<<""<<image->width<<endl; cvReleaseImage(&image); return 0; } 编译: /usr/bin/arm-linux-gnueabihf-g++ `pkg-config --cflags --libs arm-opencv` test.cpp -lpthread -lrt -o test 报错: 最后调整命令顺序编译成功,真的坑。 /usr/bin/arm-linux-gnueabihf-g++ test.cpp -lpthread -lrt -o test `pkg-config --cflags --libs arm-opencv` 执行测试程序报错: 总结交叉编译opencv很烦人,总会遇到各种各样的错误,有的人干脆直接在arm版上编译程序,省去很多麻烦,编译速度也不会很慢。之所以错误不断,是因为机器的各种库版本不尽相同,比如我们已经安装了linux版opencv,环境变量里也有了一些配置,arm版编译的时候可能就会链接错误,还有交叉编译工具、gcc、g++编译器版本等各种差别。相信如果在全新机器上编译,应该没这么多问题。最重要的一点,我们如果不理解各种操作所代表的含义,只是照搬网上的,出了问题第一时间又像无头苍蝇样的到处找答案,这样是很难搞通的,也不会有太多长进。理解各种命令的含义,执行命令报错知道检查相关的配置,学习编写makefile,才能彻底解决问题。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |