首先我们要知道的是Qt平台有Pc开发平台,(以本人所装的Redhat9linux/Qt4.3.5/arm-3.4.1版本为例)
一、Qt嵌入式开发平台的建立
概述:Qt嵌入式开发平台包括:
1、Qt-X11开发平台:(即为我们平时开发Qt应用程序时使用的系统平台)。
2、QtopiaCore-4.3.5开发平台(即framebuffer):该平台可以让Qt程序在pc机上模拟在嵌入式平台的运行情况,一般在QtopiaCore上模拟运行成功后才,进行交叉编译。
3、QtopiaCore-4.3.5-arm交叉编译平台:在此平台下编译通过的Qt程序就可以移植到arm板上运行了。
step1:
建立Pc开发平台(x11、redhat9的桌面就属于X11):
下载Qt4.3.5pc开发包qt-x11-opensource-src-4.3.5.tar.gz
#tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
#cd Qt-4.3.5
#./configure //
#make install //此过程需要3-8小时
安装好后,系统默认安装在/usr/local/Trolltech/Qt-4.3.5目录下
检查环境变量:
#which qmake
step2:
建立QtopiaCore-4.3.5编译平台(此时编译器仍然用的是默认的gcc)
此平台下的安装包原码包和X11平台是一样的,只是configure时配置不同
#tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
#cd Qt-4.3.5
#./configure -embedded x86 -qvbf -no-openssl //注意几个选项表示,以qvfb表示 -no-openssl表示不需要认证,否则会安装过程中一直叫你输入yes确认
#make install //此过程需要3-8个小时
安装完成后usr目录多了一个文件夹/usr/local/Trolltech/QtopiaCore-4.3.5就表示安装成功了
step3:
QtoptiaCore-4.3.5-arm交叉编译平台的建立(此时不是用系统默认的gcc来编译了)
此平台下的安装源码包X11平台是一样的,只是configure时配置不同
#tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
#cd Qt-4.3.5
#./configure -embedded arm //注意几个选项,必须加上 -embedded arm选项
#make install //此过程需要3-8个小时
安装完成后usr目录多了一个文件夹/usr/local/Trolltech/QtopiaCore-4.3.5-arm就表示安装成功了
step4:
设置环境变量:环境变量的设法总的说来有4种(export、profile、.bashrc、.bashrc_profile)具体看自己情况来定
#vi /root/.bash_profile //在环境变量的最前面加上一句:PATH=/usr/local/Trolltech/QtopiaCore-4.3.5-arm/bin:$PATH
#source /root/.bash-Profile //使环境变量生效
好了平台已经搭建好了,可以用他来编译Qt程序了
step5:
用QtopiaCore-4.3.5-arm来进行交叉编译
#qmake -v //检查自己的qt环境变量是否正确,如果不正确的话,就返回第4步
#cd myqtprogram //进入自己写的qt程序
#qmake -project //根QtX11环境一样编译
#qmake
#./myqtprogram //运行程序
step6:
察看自己写的Qt程序需要用到哪些库文件资源。
#arm-linux-readelf -a -myqtprogram | grep Shared //Shared首字母大写;
step7:
拷贝库文件:
根据上一步提示把Qt程序要用到的资源文件拷到自己制作的根文件系统中,以下是按本人写的Qt程序所需要的库写的
将程序移植到arm板运行,根文件系统root.cramfs和kernel的制作在这里就不细说了,本人用的是自己早做好的qt-root文件系统。
拷贝库文件到自己制作的root系统中(注意:拷贝时一定要看看大小,千万不要拷到连接文件(相当于快捷方式)了)
#cd qt-root
#cd usr/lib //注意这里不要进到pc机linux的usr目录下去了
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libpng* ./ //把图形库考过去,否则图片显示不了,强烈建议用png、bmp格式的图片,用其他格式的图片的话,否则你还要自己做连接库
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libQtCore.so libQtGui.so ./ //这2个库不用说一定要考的
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libQtNetwork.so ./ //和网络相关的库
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libstdc++.so ./
#cd ../ //以下是在根文件系统qt-root/usr/local/下制增加一个Trolltech/QtopiaCore-4.3.5-arm/lib/fonts路径目录并添加相应的字体文件,否则在arm板上会出错显示不了字
#mkdir local/Trolletch
#mkdir local/Trolletch/Qtopia-4.3.5-arm
#mkdir local/Trolletch/Qtopia-4.3.5-arm/lib
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/fonts local/Trolletch/Qtopia-4.3.5-arm/lib //注意不要拷错路径了
step8:
把程序下载到arm板运行(注意:本人是用的microsoft的附件/通讯工具/超级终端连接到板子上,以下的操作对象都是在板子上了)
#./ln -s /dev/fb/0 /dev/fb0 //由于本人的板子上烧的root文件系统显示设备名称和路径都不匹配,所以只有给他做个连接了,否则运行时会提示找不到fd0
#./myqtprogram -qws //-qws表示以服务器模式运行
ok能在板子上跑起来了