linux qt交叉编译opencv,在zedboard上移植qt+opencv(二):安装交叉编译环境

在配置完(一)里面的信息之后,你是不是有种迫不及待的心情向在windows下编写一个程序。和windows不同的是在linux中不需要专门在装一个类似VC之类的应用软件了。在系统中已经有现成的了。

一、编写helloworld应用程序

Rainysky习惯,也是为了方便,在opt建立了几个文件夹,opt/zedboard/code,并且cd /opt/zedboard/code里面将自己的代码放到里面,方便管理。

利用vim helloworld.c编写文件,相信大家都比较熟悉吧,里面的内容如下:

图1

在linux下编译.c文件时采用gcc **.c –o ***,使用./来执行程序,为了与之后的程序相区别,生成的可执行文件为helloworld_pc,代码以及运行结果如下

图2

二、交叉编译环境的建立

在PC机上运行了helloworld之后,肯定想在zedboard板卡上运行程序吧,rainysky也有这样一种期待,但pc的可执行程序不能直接在arm板卡上运行,原因可以大概解释如下吧:pc机上采用的是X86体系结构,而arm采用的就是arn结构的啦,两个可以执行的二进制代码不一样,所以可执行文件不能混着用了,要是使用还是有办法的,那就是交叉编译,交叉编译的目的就是在主机上生成目标机(zedboard)能执行的文件。啰嗦了这么多,是不是觉得很烦呢,也觉得交叉编译功能很强大,不好弄。其实zedboard已经将交叉编译的文件给我们了,只需要执行几个简单的指令就可以了。

在《嵌入式系统软硬件协同设计实战指南--基于Xilinx

Zynq》这本书附带的光盘里,也将交叉编译的安装文件附在里面了,在目录Chapter 9\Src\9.3 Single Board Computer中,不知道你还记得在第一篇里设置了PC机和虚拟机的共享目录,这时候就可以显示出它方便的功能了,直接复制到目录(rainysky在/opt/zedboard/)下就行了,

图3

和执行上一小节的helloworld一样,用./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin安装文件,很坑爹的出现一个错误,如下:

图4

百度google了一下,在终端里输入如下命令 dpkg-reconfigure dash,并且在弹出的对话框里选择,就可以啦(原因大概是:Ubuntu的shell默认安装的是dash,而不是bash,dash比bash更轻,更快。但bash却更常用。如果一些命令、脚本等总不能正常执行,有可能是dash的原因。比如编译Android源代码的时候,如果使用dash,则有可能编译出错,或者编译的系统不能启动。),可以安装的时候,就一路默认下去吧,不过这个时候最好注意下文件安装到哪个地方了。

这个时候你就可以找到类似于gcc一样的交叉编译工具了,

图5

交叉工具是不是很多,但要是直接在终端里面输入arm-xilinx-linux-gnueabi-gcc会提示找不到。这个类似于windows,需要设置环境变量,在ubuntu中,环境变量的文件是/etc/bash.bashrc,修改这个文件就行了(命令vim /etc/bash.bashrc),增加的内容是

export ARCH=arm

export CROSS_COMPILE=arm-xilinx-linux-gnueabi-

export

PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH

图6

此时保存文件,并且关闭终端,重新打开一个终端

输入arm-xilinx按几下tab键是不是显示出来了可爱的交叉编译链。到此说明交叉编译链安装完成

图7

三、交叉编译helloworld

交叉编译链安装成功了,就可以交叉编译c文件了,进入到/opt/zedboard/code/文件夹下面,使用arm-xilinx-linux-gnueabi-gcc helloworld.c -o

helloworld_zed,来生成在zed板卡上能执行的文件,并用file命令验证一下

图8

如上图可以看到helloworld_zed是在arm架构中运行的程序,helloworld_pc是在X86结构下可执行的。此后在板卡上运行下就OK啦。。。。。。。。。。

你可能感兴趣的:(linux,qt交叉编译opencv)