【原创】基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结(二)
承接上文http://www.cnblogs.com/bombe1013/p/3294301.html,我们接下来说说Qt的移植与安装。
很喜欢Qt这个库以及Qt creater这个IDE,其实个人觉得还蛮好用,因为现在基本都是在用瞪眼儿法找错误。
尤其喜欢Qt里面槽和信号的机制,感觉这个机制特别魔幻,特别方便,上个学年一整年的课程设计都是用Qt做的。
言归正传,先说一下,如何在Linux下安装Qt。
(一)Linux下Qt以及Qt creater的安装与使用
解压qt-everywhere-opensource-src-4.8.5.tar.gz到任意文件夹内
tar -xzvf qt-everywhere-opensource-src-4.8.5.tar.gz
cd qt-everywhere-opensource-src-4.8.5.tar
配置并指定编译安装目录/opt/qt-4.8.4
./configure -prefix /opt/qt-4.8.4
配置过程中出现如下提示,选择o回车,继续出现提示,
输入yes回车,接下来生成Makefile文件。
然后,执行make以及make install。编译过程我个人花了将近四个小时,
此时间很长。完成后添加环境变量。
gedit /etc/bash.bashrc
添加如下内容
export PATH=/opt/qt-4.8.4/bin:$PATH
export QTDIR=/opt/qt-4.8.4
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
保存好后,输入source /etc/bash.bashrc使添加的环境变量生效。
接下来安装Qt-creater。进入文件夹,输入如下命令:
chmod 777 qt-creator-linux-x86-opensource-2.7.0.bin
sudo ./qt-creator-linux-x86-opensource-2.6.1.bin
接下来进入安装界面,设置安装目录以及Qt库位置,安装完成后即可使用。
(二)交叉编译Qt库及镜像制作
此部分内容可参考官方wikihttp://www.wiki.xilinx.com/Zynq+Qt+and+Qwt+Base+Libraries-Build+Instructions
先建立几个环境变量,输入如下命令:
export ZYNQ_QT_BUILD=/opt/qt-arm/build
export ZYNQ_QT_INSTALL=/opt/qt-arm/install
export PATH=$ZYNQ_QT_INSTALL/bin:$PATH
在opt内建立相应目录
cd /opt
mkdir qt-arm
cd qt-arm
mkdir build install
进入qt-everywhere-opensource-src-4.8.5.tar.gz文件夹内,解压文件到ZYNQ_QT_BUILD目录内
tar -xzvf qt-everywhere-opensource-src-4.8.5.tar.gz -C $ZYNQ_QT_BUILD
解压qt_build_src.tar文件,里面有我们需要的配置文件qmake.conf,该文件由Xilinx官方提供,命令如下:
tar xvf qt_build_src.tar
cp ./qmake.conf $ZYNQ_QT_BUILD/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-gnueabi-g++/
因为该配置文件基于Qt4.7,为编译Qt4.8,需要修改文件内容。
gedit $ZYNQ_QT_BUILD/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf
源文件内容如图所示:
将前三行替换为
修改后文件内容如图所示:
然后对Qt进行配置
./configure -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -little-endian -opensource -host-little-endian
-confirm-license -nomake demos -nomake examples -prefix $ZYNQ_QT_INSTALL
配置完成后make以及make install。
之后将Xilinx交叉编译库中的内容复制到Qt库中,输入命令:
cp -P /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so* $ZYNQ_QT_INSTALL/lib
安装好Qt库后,需要为Zedboard制作镜像。
cd $ZYNQ_QT_BUILD
dd if=/dev/zero of=qt_lib.img bs=1M count=90 // qt-4.8.5需要90M大小作为镜像大小,根据需要可以改变count
mkfs.ext2 -F qt_lib.img
chmod go+w qt_lib.img
mount qt_lib.img -o loop /mnt
cp -rf $ZYNQ_QT_INSTALL/* /mnt
chmod go-w qt_lib.img
umount /mnt
这个qt_lib.img就是我们所需的运行库了。
接下来的任务就是如何挂载这个镜像。利用Qt编写一个project。导入如下环境变量:
export ZYNQ_QT_INSTALL=/opt/Qt-arm/install
export PATH=$ZYNQ_QT_INSTALL/bin:$PATH
进入project内输入如下命令
qmake -project
qmake
此时会生成Makefile文件,再输入make编译生成Arm Version的可执行文件。可以使用file命令查看。
将该工程以及qt_lib.img拷贝到SD卡的FAT格式分区下。
把SD卡插回ZYNQ开发板,通电。进入桌面后,启动终端。
在对应的ZYNQ_QT_INSTALL目录下建立相应的目录,我自己而言
cd /opt/
mkdir Qt-arm
cd Qt-arm
mkdir install
将qt_lib.img挂载。
mount /dev/mmcblk0p1 /mnt(可以使用ls /dev查看SD卡分区)
mount /mnt/qt_lib.img /opt/Qt-arm/install
运行SD卡中的文件
/mnt/PROJECTPATH/app -qws
即可成功运行
【原创】基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结(二)的更多相关文章
- arm-linux交叉编译工具链的制作(基于S3C2440)【转】
本文转载自:http://eric-gao.iteye.com/blog/2160622 制作arm-linux交叉编译工具链一般通过crosstool工具或者crosstool-NG,前者使用方便, ...
- 【转】ARM交叉编译工具链
原文网址:http://www.veryarm.com/cross-tools 为什么要用交叉编译器? 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台( ...
- ARM交叉编译工具链分类说明
转载整理自:http://www.veryarm.com/cross-tools 从授权上,ARM交叉编译工具链分为免费授权版和付费授权版. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自 ...
- ARM交叉编译工具链
交叉编译工具链是一个由编译器.连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils.gcc和glibc三个部分组成. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译 ...
- 交叉编译工具链介绍《Building Embedded Linux Systems》
1.前言 配置和编译一个合适的GNU工具链是相对复杂的并且需要很精细的操作,包括你需要对不同软件库之间的依赖关系.它们的各自的任务,不同软件库版本情况都有比较好的了解,编译工具链是一个乏味的工作. 2 ...
- archlinux安装交叉编译工具链
1. 在/usr/local下新建文件夹:arm [guo@archlinux local]$sudo mkdir arm 2. 将交叉编译工具拷贝到arm文件夹中 [guo@archlinux ...
- Linux下获取arm的交叉编译工具链
转载请注明文章:Linux下获取arm的交叉编译工具链 出处:多客博图 这里介绍,Linux下获取arm的交叉编译工具链,比如arm-linux-gnueabihf-gcc.arm-linux-gne ...
- (一)arm交叉编译工具链准备
1.背景 arm机器一般因为资源问题进行编译会影响开发速度,而且很多时候因为资源不够而无法完成编译工作.因此,需要在执行机上进行交叉编译,即使用x86或其他架构机器基于交叉编译工具编译出在arm上可以 ...
- CROSSTOOL-NG建立交叉编译工具链
CROSSTOOL-NG建立交叉编译工具链 因为考试和学习的原因我已经一段时间没有玩我的JZ2440,现在终于考完试了,我再次找出了我的JZ2440.我之前学习的时候使用的是韦东山老师提供的开发工具, ...
随机推荐
- 【转】 .NET中STAThread和MTAThread
ref:http://blog.csdn.net/dyllove98/article/details/9735955 1 COM中的公寓 本文讨论进程内COM组件.以一个示例直观演示STAThread ...
- json数据与字符串相互转化的例子
json与字符串之间的转换,本文分享一个小例子. json转成string[需要引用json2.js文件]: var arr=[{id:'id',name:'Spring'},{id:'id2' ...
- php 微信开发之 微信支付 V3 开发 -CURLOP_TIMEOUT问题
如果不懂怎么配置的话请看文章 php 微信开发之 微信支付配置 基本配置后在继续本文章的开发 . 本文章就先继续基本的实现!也并不困难.我大概的思路的返回购买者的唯一id 和 订单号的唯一 id 就2 ...
- css中overflow:hidden的属性 可能会导致js下拉菜单无法显示
css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...
- Spark Streaming揭秘 Day21 动态Batch size实现初探(下)
Spark Streaming揭秘 Day21 动态Batch size实现初探(下) 接昨天的描述,今天继续解析动态Batch size调整的实现. 算法 动态调整采用了Fix-point迭代算法, ...
- java 两个日期之间的标准工作日(原创)
package control; import java.text.ParseException; import java.text.SimpleDateFormat; import java.uti ...
- 1065. A+B and C (64bit)
#include<stdio.h> #include <math.h> int main() { long long a,b,c,sum; int n,i; while(sca ...
- Import和SQL*Loader这2个工具的异同
问:请讲述Import和SQL*Loader这2个工具的异同? 解答: 相同点:这两个ORACLE工具都是用来将数据导入数据库的. 区别是: IMPORT工具只能处理由另一个ORACLE工具EXPOR ...
- Telerik RadGridView 右键菜单如何设置?
问题: 我想去掉红线框住的部分,希望有会的网友帮助我,谢谢! 解决方法: 默认: 修改: [利用 ContextMenuOpening 事件,对应你的项目,你要自己修改那判断的字符串(你的中文)] p ...
- 第二天就跳票 将wikipedia上的英文词条翻译为中文 手动
忙着改简历一整天,刚说完一天一博,就要跳票了. 还是写点东西吧. 今天又翻译了一个维基百科上的条目,刚过一天就忘了怎么弄,还得回头翻帖子.在这先记一下,省的以后找不到. 1.注册个wiki账号,轻松过 ...