在Linux中分别安装应用于不同平台的QT:PC;嵌入式X86;ARM。
这三者PC版、嵌入式X86版和ARM版的区别主要体现在:当configure时分别加了不同的参数,具体区别是:
PC平台:在linux中全安装qt,用它编译好程序后,直接用“./”就可运行。
嵌入式X86平台:带有qvfb功能,在PC机上可以模拟应用程序在arm开发板上的运行情况。用此编译好的程序,只用“./”命令不可以运行,必须加上参数 -qvfb -qws;
ARM平台:编译好的程序,用于在arm平台上运行。
1. 系统环境
主机操作系统:ubuntu10.04
主机编译器:gcc4.4.3,
交叉编译器:arm-linux-gcc-4.3.2
2软件包:
2.1 qt源代码
qt-everywhere-opensource-src-4.6.3.tar.gz、
ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.3.tar.gz
也可以在ftp://ftp.qt.nokia.com/qt/source/下找对应的版本
2.2触摸屏校验工具
tslib-1.4.tar.gz
下载地址:
http://ishare.iask.sina.com.cn/f/21567219.html
3安装交叉编译器
详细见:《Arm-linux-gcc-4.3.2安装步骤》
http://blog.csdn.net/imxiangzi/article/details/7452931
4安装触摸屏校验工具
把tslib-1.4.tar.gz放到一个目录下,比如/opt目录下。接着执行命令如下:
#tar zxvf tslib-1.4.tar.gz
执行命令cd tslib,进入tslib当前目录,接着执行命令如下:
#./autogen.sh
然后接着执行配置命令:
#./configure --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
最后执行编译命令和安装命令如下:
1. make
2. make install
如果以上步骤没错,则可以在/usr/local/tslib下出现我们需要的库文件,这些库文件我们移植时会用到。
编译期间出现的错误:./autogen.sh: 4: autoreconf: not found
解决:sudo apt-get install autoconf automake libtool
http://blog.csdn.net/imxiangzi/article/details/7452982
5.编译Qt-4.6.3库文件
5.1解压:
把qt-everywhere-opensource-src-4.6.3.tar.gz放到/opt目录下。接着执行命令如下:
1. tar zxvf qt-everywhere-opensource-src-4.6.3.tar.gz
接着把解压出来的目录重名成qt-everywhere-opensource-src-4.6.3文件复制两份,把这三份文件分别重命名为:pc,qt-embedded-4.6.3-x86 qt-embedded-4.6.3-arm
5.2编译 PC 版
进入pc目录,执行如下操作:
#./configure
# make
# make install
配置configure的时候会提问是使用什么版本,选择开源版本“o”,接受他的协议yes,下面的安装也一样。
“Which edition of Qt do you wantto use?”
然后给你两个类型供选择:
Type'c' if you want to use the Commercial Edition.
Type'o' if you want to use the Open Source Edition.
第一个是商业版,第二个是自由版。
选择 'o'(Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本)。
这时候,出现许可界面。
选择 'yes'接受许可协议。
开始生成 makefile文件。这个大约需要 5 -10分钟的时间。
安装过程比较长,由于VM默认只是一个CPU,可以调整CPU的个数和你实际的机器一致,
Make命令添加-j3参数允许多线程编译,可以加快速度,下面的编译也是一样。编译的时候可以看到占用CPU的百分比100%
编译过程中出现的问题:
A:出错:Basic XLibfunctionality test failed!
解决方法:sudo apt-get install libx11-dev libxext-dev libxtst-dev
http://blog.csdn.net/imxiangzi/article/details/7452990
B:出错:collect2:ld terminated with signal 11
解决:加大swap空间
http://blog.csdn.net/imxiangzi/article/details/7453008
5.3编译嵌入式x86版
进入x86目录,执行如下操作:
# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
# make
# make install
安装过程比较长,没有碰到过错误。
编译安装PC版中的 qvfb:
进入pc/tools/qvfb/目录,执行如下操作:
#make
编译完毕,将pc/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.6.3/bin目录。
5.4编译嵌入式arm版(需要 arm-linux-gcc 的支持)
必须加上“-prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm ”参数, 不然安装后不在QtEmbedded-4.6.3-arm文件夹下,而是覆盖了QtEmbedded-4.6.3。
# ./configure \
-prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24 \
-fast \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake docs
如果放弃配置,则使用命令:# make confclean
编译:# make
安装:# make install
安装完成后,在/usr/local/Trolltech目录中有三个文件夹:Qt-4.6.3、QtEmbedded-4.6.3、QtEmbedded-4.6.3-arm。
5.5测试qvfb
为了方便使用qvfb模拟ARM的结果,在环境中添加qvfb的路径
1. 输入命令: gedit /.bashrc编辑.bashrc文件,在文件末尾加入如上面的内容
export PATH=/usr/local/Trolltech/QtEmbedded-4.6.3/bin:$PATH
2. 重启,测试是否加入成功
echo $PATH看是否显示刚才添加的路径
3. 测试
命令:#qvfb -width 800 -height 480 &
其中&表示后台运行。
将会出现界面
表示qvfb启动成功
====================================================================
主要参考:
1.QT嵌入式环境搭建与移植
http://blog.chinaunix.net/uid-26119896-id-3141782.html
2.Linux下实现Qt 4.6.3移植Ubuntu10.10篇
http://blog.csdn.net/defonds/article/details/4941746
3.Linux 下编译并安装配置 Qt 全过程
http://mobile.51cto.com/symbian-273308.htm