`
xiaoheliushuiya
  • 浏览: 401430 次
文章分类
社区版块
存档分类
最新评论

搭建mini2440的qt4.7开发环境

 
阅读更多

本文介绍的关于mini2440的t4.7的移植和搭建环境的方法,主要是借鉴网上的一些博客和老师给的文档。参考文章:

http://www.360doc.com/content/11/1214/14/7899729_172184546.shtml

http://wenku.baidu.com/link?url=usRE4zy_tUXfsqYVtiI_hUXIT1OhN-FGVHTIOh8ptmohbYEzWTMgora5XyHRht92d1OsAnOVCfSGNk_ZCiP64BJwvZUBu_Ez0uJo5fAxTLG

http://blog.chinaunix.net/uid-26663150-id-3245971.html

http://www.docin.com/p-693636033.html

http://www.cnblogs.com/emouse/archive/2013/01/29/2881311.html

http://hi.baidu.com/zy6666h/item/1ca216374df9c64d3175a13e

http://biancheng.dnbcw.info/linux/430648.html

软硬件信息:

开发板:mini2440

宿主机操作系统:Red Hat Enterprise Linux 5.1

arm-linux-gcc-4.3.2.tgz

arm-qte-4.7.0-20101105.tar.gz

fontconfig-2.4.2.tar.gz(qt4.7的补丁)

tslib-1.4.tar.gz

x86-qte-4.6.1-20100201.tar.gz

wenquanyi_120_50.qpf(字库)

为了最终能在开发板上跑一个我们写的测试程序,整个过程大致有以下 五步:

1.建立交叉编译环境arm-linux-gcc

2.移植触摸屏驱动;

3.交叉编译qt4.7的库文件,然后移植到开发板上;

4.在我们的宿主机的操作系统Red Hat里面安装Qt;

5.建立和配置测试程序test,最后下载开发板上。

1.建立交叉编译环境arm-linux-gcc

在这里,我推荐使用arm-linux-gcc-4.3.2。之前我使用的是arm-linuc-gcc-4.5.1,结果在后面的触摸屏驱动移植上遇到了问题,最后使用了arm-linux-gcc-4.3.2才移植成功。

(1)解压arm-linux-gcc-4.3.2

#tar -xvzf arm-linux-gcc-4.3.2.tgz -C /
注意:C后面有个空格,并且C是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。执行该命令,将把arm-linux-gcc安装到/opt/FriendlyARM/toolschain/4.3.2目录下;


(2)修改个人配置文件.bashrc
#gedit/root/.bashrc
编辑/root/.bashrc 文件,注意“bashrc”前面有一个“.”,修改最后一行为 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin,注意路径一定要写对,否则将不会有效。

说明:.bashrc是用户配置文件,在用户登录系统时,系统将会自动读取它,修改后要想及时生效,可以退出系统在登录,或者使用source .bashrc


(3)注销当期登录,重新登录后,命令行输入:

#arm-linux-gcc -v

如果出现下面信息,则说明交叉编译环境安装成功了。

2.移植移植触摸屏驱动

在这里,建议先触摸屏驱动移植在交叉编译qt的库文件,因为交叉的过程会用到驱动程序的库(这点本人不太确定)。以下是步骤:

(1)解压tslib-1.4.tar.gz

(2)进入解压后的文件夹:cd tslib

(3)执行:./autogen.sh

(4) 为免make过程出现错误,执行:

echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache

(5)执行: ./configure --host=arm-linux --cache-file=arm-linux.cache --enable-inputapi=no --prefix=/usr/local/tslib

(6)执行:make

(7)执行:make install,文件夹/usr/local/tslib的内容如下:


(8)修改ts.conf内容
  vi /usr/local/tslib/etc/ts.conf
  最后内容如下:
  module_raw input
  module pthres pmin=1
  module variance delta=30
  module dejitter delta=100
  module linear  

(9)然后打包整个tslib的内容,下载到开发板里的对应路径下(/usr/local/tslib下);


(10)配置环境变量
  vi /etc/profile
  添加如下内容:
 export TSLIB_ROOT=/usr/local/tslib
 export TSLIB_TSDEVICE=/dev/input/event0 (你的开发板dev下的触摸屏设备节点文件,没有的话,就自己 创建一个,进入/dev/input/目录mknodevent0 c 13 64 )

 export TSLIB_CALIBFILE=/etc/pointercal
 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
 export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
 export TSLIB_FBDEVICE=/dev/fb0
 exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
(11)重启MINI2440,在终端下输入./ts_calibrate出现tslib的触摸屏五点校准画面,至此,tslib的安装移植成功完成。

3、交叉编译qt4.7的库文件,然后移植到开发板上

要在开发板上运行qt的应用程序,我们不仅需要有应用程序在ARM平台下的可执行的二进制文件,还需要应用程序所需要的Qt库文件,这些库文件同样需要交叉编译成适合ARM平台的文件。交叉编译后的生成的qt库文件, 挑出我们需要的文件下载到开发板相应的路径下面(路径名与它们在Red Hat的路径相同,即要与应用程序在宿主机交叉编译时的库文件的路径相同)。

(1)解压arm-qte-4.7.0-20101105.tar.gz,解压后的文件夹里面还有压缩包qt-everywhere-opensource-src-4.7.0.tar.gz,解压之。

#tar-zxvf arm-qte-4.7.0-20101105.tar.gz

#tar zxvf qt-everywhere-opensource-src-4.7.0.tar.gz


(2)制作配置文件,并放到qt-everywhere-opensource-src-4.7.0里面

#gedit autoconfig.sh
编辑文件如下:
#!/bin/bash
./configure \
-prefix /usr/local/Trolltech/QtEmbedded-4.7.0-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 \
-qt-mouse-tslib
-I/usr/local/tslib/include \
-L/usr/local/tslib/lib

exit

(3)生成Makefile文件并编译安装

#chmod 755 autoconfig.sh
#./autoconfig.sh
#make
#make install

注意:步骤#./autoconfig.sh 会很漫长,而且执行到最后可能会在终端打印很多字符‘y’,不管它就是了。


(4)运 行mktarget脚本,将会从编译好的目标文件目录中,提取出必要的QtE-4.7.0库文件和可执行二进制示例,并打包为target-qte-4.7.0.tgz(打包过程会提示找不到或打不开某些文件或文件夹,不管它就是了)把它在开发板的根目录下解压,就可以使用了,如下命令

#tar xvzf target-qte-4.7.0.tgz –C /

这样,就会在/usr/local/目录下创建生成Trolltech目录,它里面包含了运行所需要的所有库文件和可执行程序。


(5)将/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/fonts中的字体全部删除将 wenquanyi_120_50.qpf字体复制到fonts下:

#rm –rf /usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/fonts/*

#cp wenquanyi_120_50.qpf /usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/fonts/


(6)配置系统脚本文件

#vi /etc/init.d/rcS&

我们将看到系统的启动脚本,这个脚本的最后,启动的是qtopia:/bin/qtopia & 。我们将此行注释起来,并添加:/bin/qt4 &

接下来,我们修改位于开发板/bin目录下的脚本文件qt4(如果没有就建一个),其内容如下:

脚本的倒数第二行:/bin/test -qws表示的就是执行我们的测试程序。同时可以注意到此行上面的两行被注释掉了,假如你解除注释,并注释掉:/bin/test -qws 。那么重启开发板,将启动程序embeddedsvgviewer,再加上先前已经移植了触摸屏的驱动程序,则该程序能正常执行使用,这可以测试我们到这一步为止所做的工作的否目的是否达到了。

4.在我们的宿主机的操作系统Red Hat里面安装Qt

在Red Hat里面安装qt的开发环境,我们将能够开放出适应宿主的qt应用程序。然而,我们想要的是目标平台mini2440上的应用程序,这个就只要我们选择好编译选项就行了。

(1)安装Qt Creator

#tar-zxvf x86-qte-4.6.1-20100201.tar.gz

# chmod u+xqt-sdk-linux-x86-opensource-2010.01.1.bin

# ./qt-sdk-linux-x86-opensource-2010.01.1.bin

安装完毕后,桌面将显示Qt Creator的图标。

(2)安装补丁

#tar -zxf fontconfig-2.10.93.tar.gz

#cd fontconfig-2.10.93

# ./configure-prefix=/usr

# make

# make install

5.经过前面的步骤,我们已经搭建好了开发环境。接下来就写第一个程序——测试程序test

(1)打开Qt Creator,新建工程,选择Qt4 Gui Application,Base Class选择Qwidget(注意不要选择QMainWindow,否则编译的时候会出错,这可能是Qt4.7的bug),工程名取名为test;


(2)建好工程后,双击打开Forms文件下的widget.ui,然后将窗体的属性geometry设置为:Width 320 Height 240 (因为我的mini2440开发板的LCD是3.5寸,像素值为320X240),并在窗体的之间放置一个QLabel控件,适当修改其属性如下:



(3)点击“Tools | Options”,添加qmake,其中,一个qmake是用于生成X86平台的目标文件,另一个qmake是用于生成ARM平台的目标文件。结果如下图:


(4)点击Qt Creator左边的“Project”的图标,配置生成ARM平台的可执行程序的工程选项,如下图:



(5)接着,编译程序。


(6)在工程的根目录下找到可执行文件test,然后下载到开发板的/bin目录下,重启开发板,将能看到我们的qt程序。



以下链接可以下载文章中涉及的部分文件:

http://pan.baidu.com/s/1qWGtQAo


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics