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

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

Ubuntu 8.04下编译运行Qtopia 4.3.2过程(ubuntu安装qt4.8.6)  Qtopia 第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-xjvfarm-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在#defineV4L2_PIX_FMT_HI240v4l2_fourcc('H','I','2','4')
  2. /*88-bitcolor*/之后添加
  3. #defineV4L2_PIX_FMT_SBGGR8v4l2_fourcc('B','A','8','1')/*8BGBG..GRGR..*/

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

4、安装NFS

(1)安装nfs服务器端

  1. apt-getinstallportmapnfs-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/portmaprestart
  2. /etc/init.d/nfs-kernel-serverrestart

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

5、安装一些库

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

6、建立工作目录

创建 /work/qtopia_arm/nfs

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

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

  1. #exportQTOPIA_INSTALL=/work/qtopia_arm/nfs
  2. #exportQTOPIA_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. #cpcustom-linux-generic-g++.hcustom-linux-arm-g++.h
  3. #cpcustom-linux-generic-g++.cppcustom-linux-arm-g++.cpp

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

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

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

在最后添加宏定义

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

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

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

在最后添加宏定义

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

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

9、生成Makefile文件

建立一个空文件Configure.sh,

并拷贝下列内容:

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

注意:脚本文件要具有可执行属性才能执行,执行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. tar-xjvfarm-linux-gcc-3.4.1.tar.bz2-C/
  2. 然后运行命令gedit/etc/bash.bashrc
4

编译并安装

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

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

11、拷贝zoneinfo

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

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

12、运行qtopia

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

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

主机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. tar-xjvfarm-linux-gcc-3.4.1.tar.bz2-C/
  2. 然后运行命令gedit/etc/bash.bashrc
8

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

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

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

  1. gedit/usr/local/arm/3.4.1/arm-linux/include/linux/videodev2.h在#defineV4L2_PIX_FMT_HI240v4l2_fourcc('H','I','2','4')
  2. /*88-bitcolor*/之后添加
  3. #defineV4L2_PIX_FMT_SBGGR8v4l2_fourcc('B','A','8','1')/*8BGBG..GRGR..*/
0

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

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

注意:

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

  1. gedit/usr/local/arm/3.4.1/arm-linux/include/linux/videodev2.h在#defineV4L2_PIX_FMT_HI240v4l2_fourcc('H','I','2','4')
  2. /*88-bitcolor*/之后添加
  3. #defineV4L2_PIX_FMT_SBGGR8v4l2_fourcc('B','A','8','1')/*8BGBG..GRGR..*/
1

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

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

  1. gedit/usr/local/arm/3.4.1/arm-linux/include/linux/videodev2.h在#defineV4L2_PIX_FMT_HI240v4l2_fourcc('H','I','2','4')
  2. /*88-bitcolor*/之后添加
  3. #defineV4L2_PIX_FMT_SBGGR8v4l2_fourcc('B','A','8','1')/*8BGBG..GRGR..*/
2

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

转载请说明出处
知优网 » Ubuntu 8.04下编译运行Qtopia 4.3.2过程(ubuntu安装qt4.8.6)

发表评论

您需要后才能发表评论