文档章节

如何交叉编译 移植 QT

首席吹牛官
 首席吹牛官
发布于 2015/05/22 12:50
字数 1032
阅读 45
收藏 0
                   
QT简介就不多说了,是诺基亚的东东,需求:将QT移植到ARM开发环境

首先的准备工作:

Linux环境: Linux  2.6.32-24-generic  Ubuntu10.04

交叉编译工具:arm-linux-  g++-4.4.3

Qt安装包:   qt-everywhere-opensource-src-4.6.2.tar.gz

tslib库:   tslib-1.4.tar.gz

然后就开始各种编译了:

一、编译tslib库
1>编译
tar  zxvf  tslib1.4.tar.gz
cd  tslib
./autogen.sh
./configure  --prefix=/usr/local/tslib/  --host=arm-linux  ac_cv_func_malloc_0_nonnull=yes  
make  
make  install
2>拷贝PC上/usr/local/tslib/*   的文件到开发板目录下的/usr/local
cp  /usr/local/tslib/*   /home/profiles/2440/rootfs/usr/local  -rfd

注意:/home/profiles/2440/rootfs/是nfs文件系统的根目录,注意跟自己的环境差异,随机应变即可 

二、编译嵌入式qt
1>编译

tar zxvf  qt-everywhere-opensource-src-4.6.2.tar.gz

cd  qt-everywhere-opensource-src-4.6.2

./configure  \
-prefix  /usr/local/qt-4.6.2-arm  \  (安装路径)
-opensource  \  (自由版本)
-confirm-license  \  (遵守协议yes)
-release  \  (编译和连接QT时关闭调试)
-shared  \  (使用QT动态库)
-embedded  arm  \  (嵌入式arm架构)
-xplatform  qws/linux-arm-g++  \  (交叉编译时的目标平台)
-no-qt3support  \  (关闭QT3支持功能)
-fast  \  (只对库及子目录make来快速配置QT)
-no-largefile  \  (使大文件支持无效)
-qt-mouse-tslib  \  (使用tslib来驱动鼠标箭头运行,即支持触摸屏)
-I  /usr/local/tslib/include  \  (添加一个显式的include路径)
-L  /uar/local/tslib/lib  \  (添加一个显式的lib路径)
-make  tools  \  (构建tools)
-nomake  demos  \  (不构建demos)
-nomake  examples  \(不构建examples)
-nomake  docs  \  (不构建docs)
-qt-libjpeg  \  (使用jpeg库)
-qt-libpng  \  (使用png库)
-qt-libtiff  \  (使用tiff库)
-multimedia  \  (构建QT多媒体模块)
-no-qvfb  \  (不构建QVFB模块)
-no-svg  \  (不构建SVG模块)
-no-cups  \  (不编译CUPS支持)

2>拷贝
cp  /usr/local/qt-4.6.2-arm  /home/profiles/2440/rootfs/usr/local/qt-4.6.2-arm  -rfd
3>更改为大字体,并且支持中文,wenquanyi_120_50.qpf需要下载
(开发板上操作)
rm  /usr/local/qt-4.6.2-arm/lib/fonts/*   -f
cp  wenquanyi_120_50.qpf  /usr/local/qt-4.6.2-arm/lib/fonts/

3>修改PC上环境变量以便编译
export  ARMQTDIR=/usr/local/qt-4.6.2-arm  \
export  PATH=$ARMQTDIR/bin:$PATH  \
export  MANPATH=$ARMQTDIR/man:$MANPATH  \
export  LD_LIBRARY_PATH=$ARMQTDIR/lib:$LD_LIBRARY_PATH  \

qmake  -v可以查看版本

QMake  version  2.01a
Using  Qt  version  4.6.2  in  /usr/local/qt-4.6.2-arm/lib

4>写一个测试程序并交叉编译
#include  <QApplication>
#include  <QLabel>

int  main(int  argc,  char  *argv[]) 
{
        QApplication  app(argc,  argv);
        QLabel  *label   =  new  QLabel("Hello Qt!");
        label->show();
        return  app.exec();
}
保存为hello.cpp
执行:
qmake  -project
qmake  hello.pro
(如果有错误提示QMAKESPEC  has  not  been  set,  so  configuration  cannot  be  deduced.
则export  QMAKESPEC=/usr/local/qt-4.6.2-arm/mkspecs/qws/linux-arm-g++设置环境变量后,
再qmake  hello.pro,否则执行下一步)
make

cp  hello  /home/profiles/2440/rootfs/sbin
拷贝程序到开发板

5>修改开发板ts配置文件
vi  /usr/local/etc/ts.conf
去掉module_raw  input前面的注释和空格并保存
运行一下ts校正程序
/usr/local/bin/ts_calibrate
6>设置环境变量,开发板上执行
export  QTDIR=/usr/local/qt-4.6.2-arm
export  T_ROOT=/usr/local
export  PATH=$QTDIR/bin:$PATH
export  TSLIB_CONSOLEDEVICE=none
export  TSLIB_FBDEVICE=/dev/fb0
export  TSLIB_TSDEVICE=/dev/input/event0
export  TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export  TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export  TSLIB_CALIBFILE=/etc/pointercal
export  QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export  LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib

(注意/dev/fb0是framebuffer设备结点,/dev/input/event0是触摸屏设备结点名称,
注意自己的开发板是否一致,包括交叉编译并安装qt的目录/usr/local/qt-4.6.2-arm,
触摸屏校验文件的位置/etc/pointercal,配置文件的位置$T_ROOT/etc/ts.conf)


7>运行hello程序
hello  -qws
8>若需要开机即启动自己的qt程序,则需要修改启动脚本
vi  etc/init.d/rcS

(若脚本里有启动qtopia,如:
/bin/qtopia  &
echo  "                                  "  >  /dev/tty1
echo  "Starting Qtopia, please waiting..."  >  /dev/tty1
则注释这三句,在前面加上# 
#/bin/qtopia   &
#echo   "                                  "  >  /dev/tty1
#echo   "Starting Qtopia, please waiting..."  >  /dev/tty1
)
在文件最后加上
/bin/mypda  &
echo  "                                  "  >  /dev/tty1
echo  "Starting my PDA..."  >  /dev/tty1
sleep  1
这样就会自动启动/bin目录下的mypda这个脚本。
建立这个脚本
vi  /bin/mypda
输入
#!/bin/sh 
export  QTDIR=/usr/local/qt-4.6.2-arm
export  T_ROOT=/usr/local
export  PATH=$QTDIR/bin:$PATH
export  TSLIB_CONSOLEDEVICE=none
export  TSLIB_FBDEVICE=/dev/fb0
export  TSLIB_TSDEVICE=/dev/input/event0
export  TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export  TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export  TSLIB_CALIBFILE=/etc/pointercal
export  QWS_MOUSE_PROTO=Tslib:/dev/input/event0
export  LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
exec  sbin/hello  -qws
保存,chmod  +x  /bin/mypda,加执行权限
大功告成,reboot体验一下吧!

本文转载自:http://blog.csdn.net/zhx6044/article/details/7772484

上一篇: linux管道
首席吹牛官
粉丝 9
博文 368
码字总数 191938
作品 0
闵行
程序员
私信 提问
QT平台的手持媒体播放器项目如何去做?

一、本课程是怎么样的一门课程 1.1、课程的背景 Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务...

我是小北
2013/12/31
0
0
mini2440移植QT4.6.3过程

一般而言,Qt应用程序的内容可分为Qt库的编译,Qt库的移植和基于Qt的应用程序的移植。Qt库的编译所花费的耗线性时间代价是最长的,而Qt库的移植是比较简单的一个工作,只需要让串口发送数据到...

晨曦之光
2012/04/13
659
0
基于MuPDF和Qt的PDF阅读器的开发

基于MuPDF和Qt的PDF阅读器的开发 一、引言 设备上要渲染显示PDF文档,类似Adobe Reader、福昕阅读器等软件。如何去实现?Handling PDF这篇文档讨论介绍了在Qt应用程序中各种操作PDF的资料。从...

容我三思兮
2018/07/17
0
0
编译 ARM 版本 QT 库

往 Mini2440 开发板中移植 QT 应用程序时,需要用 QTCreater 交叉编译代码。而应用程序依赖于一系列的库,这就需要编译 ARM 版本的 QT 库。 编译 ARM 版本 QT 库 1.安装交叉编译环境 arm-li...

兔之
2016/03/22
60
0
Ubuntu下Qt5.6.2开发环境搭建

目录 目录 前言 Qt下载地址 Qt的Ubuntu版本安装过程 Qt的ODROID版本交叉编译工程 Qt编译选项解析 其他 总结 前言 因为开发需要用到Qt,本来想用Qt4,但是想想永远接触的是老的东西,将永远跟...

simonforfuture
2017/11/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql免安装版,服务无法启动没有抱任何错误

1.解压 2.新建my.ini [mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, e......

榴莲黑芝麻糊
32分钟前
0
0
Qt编写安防视频监控系统3-通道交换

一、前言 最开始写通道交换的功能的时候,走了很多弯路,比如最开始用最初级的办法,触发交换的时候,先关闭视频,然后设置新的url重新打开视频,这样处理非常低级而且耗内存还卡还很慢,毕竟...

飞扬青云
33分钟前
0
0
如何远程调试部署在CloudFoundry平台上的nodejs应用

网络上关于如何本地调试nodejs应用的教程已经很多了,工具有Chrome开发者工具,Visual Studio Code,和nodejs周边的一些小工具等等。 在实际情况中,我们可能遇到本地运行良好,但是部署到C...

JerryWang_SAP
54分钟前
5
0
微信扫码访问网站调用默认浏览器打开如何实现?

我们在微信内分享链接或二维码的时候,我们会发现我们的网站是可以在浏览器里正常打开的,但就是不能在微信里打开,提示 “ 已停止访问该网页 ”,无论是聊天框也一样。说是系统检测到您的网...

明尼苏达哈士奇
今天
3
0
一份Java程序员进阶架构师的秘籍,你离架构师还差多远

一、如何定义架构师 Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并...

我最喜欢三大框架
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部