在linux上交叉编译opencv之前需要交叉编译的依赖库 |
您所在的位置:网站首页 › 交叉编译依赖的库也必须交叉编译吗为什么 › 在linux上交叉编译opencv之前需要交叉编译的依赖库 |
我在后面使用opencv时并没有用到这里交叉编译的第三方库,opencv源代码自带第三方库文件,可以自己在cmake中配置,我现在不是很理解网上教程说的交叉编译opencv之前要交叉编译第三方库。虽然我做了无用功,但还是记录一下,以后可能会用到 参考文章1:https://blog.csdn.net/lang523493505/article/details/85236669 参考文章2:https://blog.csdn.net/kaychangeek/article/details/78550141 准备环境: 操作系统:Ubuntu 16.04.7 LTS 交叉编译器:arm-linux-gnueabihf-gcc 1、首先需要准备好opencv运行依赖的库文件,随便找个文件夹放进去 2、配置环境变量 打开这个文件 在结尾处输入你配置的环境变量 export OPENCV_3THPARTY_LIB=/usr/local/arm/opencv_3p_lib 环境变量就是OPENCV_3THPARTY_LIB,你以后可以在shell中用$OPENCV_3THPARTY_LIB代替后面的目录,后面的目录是你自己指定的,用来存放依赖库编译输出的东西,现在是个空目录 保存并退出,然后source一下你的文件 你可以使用以下命令检查你的环境变量是否设置成功 2、解压缩、编译并安装。注意这些库文件之间还有相互的依赖性,具体依赖性在官网有介绍,总之一定要按照下面的顺序安装,否则会报错 1、交叉编译libz(没有打错,就是这个名字) 解压缩: 进入解压后的文件夹,创建一个新的build文件夹,进入build文件夹,创建一个脚本文件build.sh 在脚本中输入命令 CC=arm-linux-gnueabihf-gcc ../configure --prefix=$OPENCV_3THPARTY_LIB --shared make make install 运行它 运行之后看一下目标路径下,应该已经有文件了 2、交叉编译yasm 解压 和上一步一样 在build.sh脚本中输入: ../configure --host=arm-linux-gnueabihf --prefix=$OPENCV_3THPARTY_LIB --enable-shared --enable-static make make install 配置权限,运行它 3、交叉编译xvidcore 解压 进入解压的文件夹 看到这里已经有build文件夹了,进去找makefile,它在build/generic路径下 输入以下内容: ../configure --host=arm-linux-gnueabihf --prefix=$OPENCV_3THPARTY_LIB --disable-assembly make sudo make install 这里重新生成了以下Makefile,注意最后安装需要加sudo获取权限 运行它 4、交叉编译libpng 参考文章:https://blog.csdn.net/weixin_42489042/article/details/83027531 先解压 libpng不需要再自己configure出makefile文件了,在scripts文件夹下已经有makefile.linux文件,直接修改它就行,如果自己configure可能会遇到找不到zlib的问题 先把它拷贝到当前路径下,重命名为Makefile 用gedit编辑它 按住crtl+f搜索zlib,找到下面的语句,修改成你自己的路径,我这里直接用环境变量 修改前 修改后再找到prefix,把它修改成你想输出的路径 修改前 修改成你自己的输出路径再找到CC 修改前 修改成你自己的交叉编译器在shell中输入编译安装命令 make make install 5、交叉编译x264 解压: 输入: CC=arm-linux-gnueabihf-gcc ../configure --host=arm-linux --prefix=$OPENCV_3THPARTY_LIB --enable-shared --disable-asm make sudo make install 运行 6、交叉编译jpegsrc 同理,这次的脚本是 ../configure --prefix=$OPENCV_3THPARTY_LIB CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf make make install 7、交叉编译mmjpeg 同理,这次的脚本是: ../configure --prefix=$OPENCV_3THPARTY_LIB --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-linux-gnueabihf-gcc --enable-swscale --extra-ldflags=-L$OPENCV_3THPARTY_LIB/lib --extra-cflags=-I$OPENCV_3THPARTY_LIB/include make&&make install 最后打开环境变量指定的目录,瞧一瞧 所有依赖库都在这里,随便看一个libjpeg.so.9.4.0,可以看到是32位arm属性 到这里,所有依赖已经交叉编译完成,撒花!!! tips 交叉编译时不要一昧复制,脚本中的--perfix和--host以及定义CC都是需要按照自己的需求修改的 每次./configure之后生成的Makefile都最好去查看一下是不是用了自己定义的交叉编译器 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |