Ubuntu 8.04下编译运行Qtopia 4.3.2过程

移动开发
本文介绍的内容是在Ubuntu 8.04下编译运行Qtopia 4.3.2过程,请看详细的内容。

Ubuntu 项目完全遵从开源软件开发的原则;并且鼓励人们使用、完善并传播开源软件。也就是Ubuntu目前是并将永远是免费的。 然而,这并不仅仅意味着零成本,自由软件的理念是人们应该以所有“对社会有用”的方式自由地使用软件,本文用的开发板:YC2440-F-V5.1

1、ubuntu8.04开启root用户及设置中文界面

Ubuntu安装后,root用户默认是被锁定了的,不允许登录。对于桌面用户来说,这样安全性更高一些,是应该的。但做为嵌入式系统开发,则不是很合适。有时在编译程序时会遇到一些莫名其妙的问题。因此我们需要开启root用户。

步骤:

1、系统->系统管理->用户和组,选择root用户然后点击“属性”,设置root用户的密码;

2、系统>系统管理>登录窗口,点“安全”选项页,选择“允许本地管理员登录”。这样在登录时就可以root为用户名登录了。登录后看到的是英文界面,即便你已经安装了中文语言包。这时还需做以下设置才能出现中文界面。

  1. gedit ~/.profile 

修改root下隐藏文件.profile,以下是修改过的。此后就成为中文桌面。# ~/.profile: executed by Bourne-compatible login shells. if [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fi fi mesg n # Installed by Debian Installer: # no localization for root because zh_CN.UTF-8 # cannot be properly displayed at the Linux console LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh"

2、安装主机GCC编译器

编译qtopia时需要用到主机的GCC编译器,ubuntu默认是不带的,因此需要下载安装。在新立得软件包管理器中搜索GCC,然后选择安装。我安装的是GCC4.2版。

3、安装交叉编译器

(1)我用的交叉编译器是arm-linux-gcc 3.4.1版。

进入arm-linux-gcc-3.4.1.tar.bz2文件所在的目录

运行命令:

mkdir /usr/local/arm (如果您的pc端linux系统已经有这个文件夹,这步就跳过)

  1. tar -xjvf arm-linux-gcc-3.4.1.tar.bz2 -C /  
  2. 然后运行命令gedit /etc/bash.bashrc 

在最后加上一行PATH=$PATH:/usr/local/arm/3.4.1/bin

保存后关闭。

重新打开终端,如果输入命令arm-linux-gcc --version后能有版本显示则交叉编译环境已经建立了。

(2)修改编译器文件

  1. gedit /usr/local/arm/3.4.1/arm-linux/include/linux/videodev2.h 在 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H','I','2','4') 
  2. /* 8 8-bit color */ 之后添加  
  3. #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B','A','8','1') /* 8 BGBG.. GRGR.. */ 

按同样的方法修改arm-linux/sys_include/linux/videodev2.h

4、安装NFS

(1)安装nfs服务器端

  1. apt-get install portmap nfs-kernel-server 

(2)配置共享文件

编辑/etc/exports,在其中增加要共享的目录

  1. gedit /etc/exports 

配置

  1. /work/qtopia_arm/nfs *(rw,sync, no_root_squash) 

/work/qtopia_arm/nfs是要共享的目录;*代表所有的客户机都可以挂接此文件系统;rw代表客户机以读写许可来挂接它们的根文件系统;no_root_squash 选项允许客户机以主机上的root身份挂接根文件系统。保存退出。

(3)重启服务

  1. /etc/init.d/portmap restart  
  2. /etc/init.d/nfs-kernel-server restart 

每当修改了/etc/exports都要重启服务以便修改生效。

5、安装一些库

在编译时可能会出现一些错误,提示缺少某些库,这时可以根据提示来下载安装缺少的库文件。每个人的主机环境都不太一样,因此缺少的库可能也不一样。

6、建立工作目录

创建 /work/qtopia_arm/nfs

并拷贝qtopia-opensource-4.3.2源码包到/work/qtopia_arm/目录下。

7、定义两个环境变量方便编译

  1. #export QTOPIA_INSTALL=/work/qtopia_arm/nfs  
  2. #export QTOPIA_RUN_ON_TARGET=/mnt 

QTOPIA_INSTALL为主机上qtopia最终的安装目录,这里将安装路径独立出来是为了方便在目标板上进行nfs挂载调试使用。

QTOPIA_RUN_ON_TARGET为qtopia在target板文件系统中的所在路径。如果采用NFS方式,一定要将qtopia挂载到QTOPIA_RUN_ON_TARGET指定的路径即/mnt ,因为qtopia运行的绝对路径已经被编译进可执行文件中。

8、修改部分源码

(1)拷贝编译目标需要的文件

  1. # cd /work/qtopia_arm/qtopia-opensource-4.3.2/src/libraries/qtopiabase/  
  2. # cp custom-linux-generic-g++.h custom-linux-arm-g++.h  
  3. # cp custom-linux-generic-g++.cpp custom-linux-arm-g++.cpp 

Note: 这两个文件包含控制液晶屏亮度函数和一些优化qotpia core 的宏定义,用户可自己设定

(2)直接支持触摸屏而不使用外部库

  1. #gedit /work/qtopia_arm/qtopia-opensource-4.3.2/qtopiacore/qconfig-qpe.h 

在最后添加宏定义

  1. #define QT_QWS_IPAQ  
  2. #define QT_QWS_IPAQ_RAW 

(3)修改时区信息读取路径

  1. #gedit /work/qtopia_arm/qtopia-opensource-4.3.2/qtopiacore/qconfig-qpe.h 

在最后添加宏定义

  1. #define QTOPIA_ZONEINFO_PATH "/mnt/etc/zoneinfo/" 

QTOPIA_ZONEINFO_PATH即时区文件所在的路径,这里对它进行修改是必要的。否则qtopia运行时候会到默认路径/usr/share/zoneinfo寻找时区文件。注意,这里的“/mnt”即qtopia在开发板文件系统中的所在路径,要和环境变量$QTOPIA_RUN_ON_TARGET一样。

9、生成Makefile文件

建立一个空文件Configure.sh,

并拷贝下列内容:

  1. echo "yes" | /work/qtopia_arm/qtopia-opensource-4.3.2/configure -edition phone -xplatform linux-arm-g++ -arch arm   
  2. -no-qvfb -release -displaysize 480*272 -no-modem -launch-method quicklaunch –image /work/qtopia_arm/nfs   
  3. -prefix /mnt -no-bluetooth -no-drm -no-infrared -extra-qt-config "-qt-zlib -qt-gif -qt-libpng -qt-libmng 
  4. -qt-libjpeg" -extra-qtopiacore-config " -depths 16 -qt-mouse-linuxtp -no-mouse-pc -no-mouse-bus 
  5. -no-mouse-yopy -no-mouse-vr41xx  -no-mouse-tslib -no-mouse-qvfb" 2>&1 | tee logfile 

注意:脚本文件要具有可执行属性才能执行,执行chmod +x Configure.sh。

注:1) 这里需要提的是qtopia交叉编译时默认是使用arm-linux-gcc编译的,从-xplatform 参数指定的路径linux-arm-g++下,我们可以找到qmake.conf文件,里面定义了交叉编译所使用的工具, QMAKE_CC默认为arm-linux-gcc。所以,若有人使用了其他名字的交叉编译工具,需要在qmake.conf文件进行修改或将编译工具连接为arm-linux-*也可以。

10、配置并编译

生成Makefile

  1. #cd /work/qtopia_arm  
  2. #./configure.sh 

编译并安装

  1. #make  
  2. #make install 

安装路径为$QTOPIA_INSTALL即/work/qtopia_arm/nfs

11、拷贝zoneinfo

默认安装时没有拷贝时区信息,需要手动拷贝

  1. #cp –rvf /work/qtopia_arm/qtopia-opensource-4.3.2/etc/zoneinfo /work/qtopia_arm/nfs/etc 

12、运行qtopia

(1)启动好开发板后(内核+文件系统),挂载qtopia

  1. #mount -t nfs 192.168.1.101:/work/qtopia_arm/nfs /mnt -o nolock,rsize=1024,wsize=1024,timeo=15 

主机IP地址设置为192.168.1.101,子网掩码255.255.255.0,网关192.168.1.1

开发板IP地址设置为192.168.1.168,子网掩码255.255.255.0,网关192.168.1.1

(2)设置环境变量

导入某些环境变量,使qtopia正常工作

在开发板上执行:

  1. #export PATH=/mnt/bin:$PATH  
  2. #export LD_LIBRARY_PATH=/mnt/lib:$LD_LIBRARY_PATH  
  3. #export QWS_MOUSE_PROTO=LinuxTP:/dev/h3600_tsraw  
  4. #export QWS_DISPLAY="LinuxFb:mmWidth85:mmHeight48:0" 

其中“mmWidthXX:mmHeightXX”为屏幕的可视面积大小,与具体的设备尺寸有关系

  1. 12.3运行qpe  
  2. #qpe& 

等target板LCD出现画面之后,启动触摸屏校正程序

  1. #qcop service send Launcher "execute(QString)" "calibrate" 

校准完后会在/etc目录下生成Pointercal校准文件,每次触摸屏启动都会读取该文件内容进行触摸屏设定。还有一种方法是利用TSLIB库的校准程序来进行校准,将TSLIB交叉编译到目标机上,然后运行ts_calibrate程序。

校准完毕后就可正常使用qpe。

注意:

1、首先假定开发板触摸屏驱动工作正常。可以通过如下的办法简单的测试一下:

  1. #cat /dev/fb0  
  2. #cat /dev/h3600_tsraw 

如果报错则说明设备未能正确添加。需要先解决触摸屏驱动问题。

2、Qtopia运行时可能需要的一些额外库,

  1. cp -v libdl*so* $QTOPIA_INSTALL/lib/  
  2. cp -v libpthread*so* $QTOPIA_INSTALL/lib/  
  3. cp -v libstdc++*so* $QTOPIA_INSTALL/lib/  
  4. cp -v libgcc_s*so* $QTOPIA_INSTALL/lib/ 

小结:Ubuntu 8.04下编译运行Qtopia 4.3.2过程的内容介绍完了,Ubuntu的推出,又给LINUX添加了新印象。最后希望本文对你有所帮助吧!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-20 09:58:17

Qt Qtopia 移植

2011-01-21 17:01:34

Zimbra

2009-02-18 19:13:25

2011-07-05 16:31:17

Qtopia 交叉编译

2010-09-09 17:41:52

ubuntu8.04tftp

2009-12-29 17:21:24

Ubuntu 8.04

2011-07-05 14:06:17

编译 Qt

2010-01-07 10:14:41

2012-08-13 17:34:11

ubuntu操作系统

2023-03-09 11:02:40

linux编译源码

2010-03-16 10:28:44

Ubuntu 8.04

2010-03-16 10:13:13

2010-03-16 18:40:59

Ubuntu8.04

2011-03-25 14:13:07

2010-02-06 16:01:26

Ubuntu gstr

2009-12-07 09:52:06

Ubuntu9.10/

2011-09-14 15:04:47

Android 2.2

2010-03-02 17:29:47

Ubuntu 8.04

2010-03-15 16:16:41

Ubuntu 8.04

2011-09-07 09:47:35

UbuntuAndroid
点赞
收藏

51CTO技术栈公众号