基于iTop4412的额opencv搭建

到此处假设你前面的arm交叉编译环境和QT已经配置完成,如果没有配置完毕,请参考链接

Ubuntu配置QT(为iTop-4412开发板提供QT编程基础)-CSDN博客

iTop-4412傻瓜式搭建过程_itop4412文件系统制作-CSDN博客

也有其它相关资源,可以在我接下来的文章中挨个提到,

但是如果不想一个一个找的,可以见我提供的资源包链接:

资源包:链接:https://pan.baidu.com/s/1A6sYe6anGRvDXfwHfF-f1Q?pwd=9ki1

提取码:9ki1

1.基本环境确认:

首先确保你本地的编译环境是配置ok的,查看.bashrc文件如下图所示含有arm-linux-4.4.1的编译环境

搭建opencv-2.4.9_arm.tar.gz移动到/opt/目录下

2.opencv的搭建

安装基本的依赖项:

apt-get install libavcodec-dev libavformat-dev libswscale-dev

这几项与视频解码相关,需要安装,否则编译opencv会报错。

将我们下载下来的opencv-2.4.9.zip在windows下解压之后移动到Ubuntu的/home/Baidu/opencv目录下,如果没有该目录,创建就可以了,(也可以在ubuntu下解压,都是一样的,如果在Ubuntu下解压,输入指令:unzip opencv-2.4.9.zip)

安装cmake工具:

apt-get update & apt-get install cmake & apt-get install cmake-qt-gui

注意一定是无报错结尾,确保确实安装上了,

安装val/v412等必要的依赖库:

使用命令“cmake-gui”打开 cmake 的 gui 界面,开始进行配置,如下图所示:

(其中“where to build the binaries”所指的路径是自己创建的路径,建议放置到统一位置)

运行完之后,下面会出现红色区域,将其中WITH_TIFF,WITH_CUDA 及 WITH_GTK的对勾去掉,然后点击下面Configure和Generate,如下图所示:

查看前面自己创建的输出编译文件,可见生成了Makefile,我的是/opt/opencv-arm,如下图所示:

然后编辑文本文件:gedit CMakeCache.txt,跳转至194行,将

将“CMAKE_EXE_LINKER_FLAGS:STRING=' '”改为

“CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl”如下图所示:

编译libv4l库:去网站下载https://src.fedoraproject.org/repo/pkgs/libv4l/libv4l-0.6.4.tar.gz/7ef58595dc36252be7f83f69b379a715/

或者输入指令:

wget https://src.fedoraproject.org/repo/pkgs/libv4l/libv4l-0.6.4.tar.gz/7ef58595dc36252be7f83f69b379a715/libv4l-0.6.4.tar.gz获取libv4l-0.6.4.tar.gz

之后将库文件videodev.h拷贝到/usr/include/linux/

解压文件之后进入libv4l库生成的目录下:打开Makedile文件:

在第一行添加内容如下图所示:CC=arm-none-linux-gnueabi-gcc

然后进入libv4l1和libv4l2以及libv4lconvert目录下,在每个文件的Makefile下添加相同的内容:CC=arm-none-linux-gnueabi-gcc(添加的位置都是第一行)

之后回到libv4l-0.6.4下,输入命令:

mkdir tmp & make & make install PREFIX=$PWD/tmp

编译之后,进入刚刚创建的tmp目录下的bin目录下,输入file *.*,查看编译后的库是否为ARM的,如下图所示:

编译成功以后,回到tmp目录下,输入以下命令把库和头文件复制到交叉编译链里相应的路径中:

cp -r include/*  /usr/local/arm/4.4.1/arm-none-linux-gnueabi/include/ & cp -r lib/*  /usr/local/arm/4.4.1/arm-none-linux-gnueabi/lib

之后将编译生成的lib库拷贝到opencv的安装路径下:cp -r lib/ /opt/opencv-arm/lib/

之后回到opencv的编译目录:cd /opt/opencv-arm/,开始make编译,输入make,如下图所示,正在编译中:

编译时间较长,静心等待就好

然后输入make install,运行结束无报错结果如下图所示:

之后进入到/usr/local/opencv-2..4.9目录下,生成我们的库文件,如下图所示:

3.UVC程序编译

将提供的源码进行解压,进入解压目录。然后使用命令“/opt/qt-4.7.1/bin/qmake & make”编译程序,编译完成即可看到程序,如下图所示:(但我发现官方给我们的camera包已经编译好了,这边我就没有再次编译了)

4.编译openssl

  1. 下载链: https://www.openssl.org/source/openssl-1.0.2s.tar.gz 

将openssl-1.0.2s.tar.gz移动到/home/baidu/目录下,进行解压

进入解压目录,进行编译配置:

setarch i386 ./config no-asm shared --prefix=/usr/local/openssl/

其中各个参数的意思如下:

setarch i386:声明生成的是32位CPU,如果是64位CPU则去除该部分

 --prefix :指定make install后生成目录的路径,不修改此项则默认为OPENSSLDIR目录(/usr/local/ssl)。

shared :生成动态连接库。

no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对arm格式不支持的

修改Makefile里面的编译器参数:打开Makefile配置文件,修改其中的62行如下图所示:

CC= arm-none-linux-gnueabi-gcc

AR= arm-none-linux-gnueabi-ar $(ARFLAGS) r

RANLIB= arm-none-linux-gnueabi-ranlib

NM= arm-none-linux-gnueabi-nm

之后进行编译,输入:make & make install,无报错结束查看/usr/local/openssl目录,可以看到生成的库文件,如下图所示:

5.编译curl

在这里需要用到的交叉编译器是:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,该编译包可见我提供的资源包

具体的该资源包配置和之前配置其它是一样的步骤,大致就是解压:tar -xvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,然后修改全局配置环境:nano .bashrc输入:export PATH=$PATH:/usr/local/arm/arm-2014.05/bin,进行环境重新有效:source .bashrc

下载curl-7.65.0.tar.gz:curl downloads在网页下载,或者输入:wget https://curl.se/download/curl-7.65.1.tar.gz,如下图所示:

解压之后进入解压目录,进行设置编译参数:./configure  --prefix=/usr/local/openssl --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gunbabi-g++--with-ssl=/usr/local/openssl

无报错结束,如下图所示:

然后输入:make & make install无报错结束,如下图所示:

然后进入/usr/local/openssl/lib就可以看到编译之后的库文件

6.编译jsoncpp

在这里需要用到的交叉编译器是:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,该编译包可见我提供的资源包

具体的该资源包配置和之前配置其它是一样的步骤,大致就是解压:tar -xvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,然后修改全局配置环境:nano .bashrc输入:export PATH=$PATH:/usr/local/arm/arm-2014.05/bin,进行环境重新有效:source .bashrc

下载curl-7.65.0.tar.gz:curl downloads在网页下载,或者输入:wget https://curl.se/download/curl-7.65.1.tar.gz,如下图所示:

解压之后进入解压目录,进行设置编译参数:./configure  --prefix=/usr/local/openssl --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gunbabi-g++--with-ssl=/usr/local/openssl

无报错结束,如下图所示:

然后输入:make & make install无报错结束,如下图所示:

然后进入/usr/local/openssl/lib就可以看到编译之后的库文件

7.制作文件系统

将资源包里的iTOP-4412-QtE5.7_4412_elite.tgz拷贝到目录/home/baidu/root下,并对其进行解压:tar -xvf iTOP-4412-QtE5.7_4412_elite.tgz,解压之后的目录如下图所示:

进入解压完的目录root下,将编译好的openssl拷贝到根目录文件系统的/usr/local/路径下:cp -r /usr/local/openssl/ ./usr/local/

修改当前根目录下的环境变量,添加openssl的系统变量,输入:gedit ./etc/init.d/rcS,修改环境变量如下图所示:

lib文件拷贝到根目录lib下:cp -r /usr/local/openssl/lib/* ./lib/

因为我的编译好的curl在目录/usr/local/openssl下,所以不需要单独编译。

将编译好的jsoncpp拷贝到根目录的/usr/local下,步骤如上:

       最后将opencv编译好之后的文件移动到文件系统下

自带的libstdc++.so.6.0.10不支持GLIBCXX_3.4.11,在之后运行程序会报错。

       cd ./lib

       移除原本的头文件:rm -rf libstdc++.so.6

将arm4.4.1的文件拷贝进去:cp -r /usr/local/arm/4.4.1/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6.0.12 ./

重新创建链接:ln -s libstdc++.so.6.0.12 libstdc++.so.6

8.打包根文件系统

选择工具linux_tools.tgz将其拷贝到任意目录下并解压

进入到/home/baidu/root输入:make_ext4fs -s -l 2092957696 -a root -L linux system.img root

将这个system.img拷贝到开发板:fastboot.exe flash system system.img

9.重新分区烧写

  1. 因为我们原本的分区时1G的需要重新分区,分为2G的,进入开发板,重新分区:

fdisk -c 0 2048 300 300

fatformat mmc 0:1

ext3format mmc 0:2

ext3format mmc 0:3

ext3format mmc 0:4

fastboot

fastboot.exe flash bootloader u-boot-iTOP-4412.bin

fastboot.exe flash kernel zImage

fastboot.exe flash ramdisk ramdisk-uboot.img

fastboot.exe flash system system.img

fastboot -w

fastboot reboot

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值