作者:cherry_odd
转自:http://blog.youkuaiyun.com/cherry_odd/article/details/12156629
先说参考资料吧:
友善之臂提供的《tiny210用户手册》(下面简称用户手册)是必不可少的,在测试交叉编译环境是否搭建好后,要写测试应用程序,那么210用户手册上所缺少的这部分在《Mini6410 Qt4和Qtopia编程开发指南-20101228》(下面简称开发指南)中有所说明。
fedora安装qt
1.#yum intall qt qt-devel qt-x11 qt-doc qt-demos qt-examples qt-assistant qt-creator qt-config
2.安装完后命令为qmake-qt4
建立交叉编译环境(用户手册5.4.4)
在Linux平台下,要为开发板编译内核,图形界面Qtopia/Qt4,bootloader,还有其他一些应用程序,均需要交叉编译工具链,我们使用的是arm-linux-gcc-4.5.1,它默认采用armv6指令集,支持硬浮点运算,下面是安装它的详细步骤。
Step1:
将光盘Linux目录中的arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz复制到Fedora9某个目录下如tmp/,然后进入到该目录,执行解压命令:
#cd /tmp
#tar xvzfarm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C /
注意:C后面有个空格,并且C是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。执行该命令,将把arm-linux-gcc安装到/opt/FriendlyARM/toolschain/4.5.1目录
Step2:
把编译器路径加入系统环境变量,运行命令
#vim/root/.bashrc
编辑/root/.bashrc文件,注意“bashrc”前面有一个“.”,修改最后一行为exportPATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin,注意路径一定要写对,否则将不会有效。如图,保存退出。
重新登录系统(不必重启机器,开始->logout即可),使以上设置生效,在命令行输入arm-linux-gcc–v,会出现如下信息,这说明交叉编译环境已经成功安装。
解压安装源代码及其他工具(用户手册5.5)
本小节将解压安装开发学习过程所用到的全部源代码以及其他一些小工具,这包括:
- Linux内核源代码
- Qtopia-2.2.0平台源代码(分为x86和arm平台两个版本)
- arm-qt-extended-4.4.3平台源代码(也就是Qtopia4,分为x86和arm两个版本)
- QtE-4.7.0平台源代码(arm版本)
- busybox-1.17源代码- Linux编程示例源代码
- 目标文件系统目录
- 目标文件系统映象制作工具(包括yaffs2和UBIFS)
- 图形界面的Linuxlogo制作工具logomaker
注意:所有的源代码和工具都是通过解压方式安装的,所有的源代码均使用统一的编译器arm-linux-gcc-4.5.1编译
解压安装源代码
首先创建工作目录/opt/FriendlyARM/mini210/linux
在命令行执行
#mkdir –p /opt/FriendlyARM/tiny210/linux
后面步骤的所有源代码都会解压安装到此目录中:
(1)准备好Linux源代码包
在Fedora16系统中中创建一个临时目录/home/cherry/cherry_DataFile/linux
#mkdir /home/cherry/cherry_DataFile/linux
把光盘中linux目录中的所有文件都复制到/home/cherry/cherry_DataFile/linux目录中
(2)解压安装Linux内核源代码
在工作目录/opt/FriendlyARM/tiny210/linux中执行:
#cd/opt/FriendlyARM/tiny210/linux
#tar xvzf /home/cherry/cherry_DataFile/linux/linux-3.0.8-20111118.tar.gz
将创建生成linux-3.0.8目录,里面包含了完整的内核源代码
说明:20111118是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。
(3)解压安装目标文件系统
执行以下命令:
#cd/opt/FriendlyARM/tiny210/linux
#tar xvzf /home/cherry/cherry_DataFile/linux/rootfs_qtopia_qt4-20111118.tgz
将创建生成rootfs_qtopia_qt4目录
说明:20111118是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。
(4)解压安装嵌入式图形系统
qtopia源代码在工作目录/opt/FriendlyARM/tiny210/linux中执行:
#cd/opt/FriendlyARM/tiny210/linux
#tar xvzf /home/cherry/cherry_DataFile/linux/x86-qtopia-20100420.tar.gz
#tar xvzf /home/cherry/cherry_DataFile/linux/arm-qtopia-20101105.tar.gz
将创建x86-qtopia和arm-qtopia两个目录,并内含相应的全部源代码。
说明:x86-qtopia和arm-qtopia后面或许会有日期尾缀,它是我们的发行或更新日期标志,请以光盘中实际日期尾缀为准。源代码包中也包含了嵌入式浏览器konquor的源代码。另外,为了方便用户学习开发使用,此源代码包相比Qt公司的原始版本已经打过补丁,并做了诸多改进,它们都是源代码方式,我们不再一一赘述,感兴趣者可自行比较。
(5)解压安装嵌入式图形系统
qt-extended-4.4.3源代码在工作目录/opt/FriendlyARM/tiny210/linux中执行:
#cd/opt/FriendlyARM/tiny210/linux
#tar xvzf /home/cherry/cherry_DataFile/linux/x86-qt-extended-4.4.3-20101003.tgz
#tar xvzf /home/cherry/cherry_DataFile/linux/arm-qt-extended-4.4.3-20101105.tgz
将创建x86-qt-extended-4.4.3和arm-qt-extended-4.4.3两个目录,并内含相应的全部源代码。
说明:x86-qt-extended-4.4.3和arm-qt-extended-4.4.3后面或许会有日期尾缀,它是我们的发行或更新日期标志,请以光盘中实际日期尾缀为准。
(6)解压安装QtE-4.7.0
源代码在工作目录/opt/FriendlyARM/tiny210/linux中执行:
#cd/opt/FriendlyARM/tiny210/linux
#tar xvzf /home/cherry/cherry_DataFile/linux/x86-qte-4.6.1-20100516.tar.gz
#tar xvzf /home/cherry/cherry_DataFile/linux/arm-qte-4.7.0-20101105.tar.gz
将创建x86-qte-4.6.1和arm-qte-4.7.0两个目录,并内含相应的全部源代码。
说明:x86-qte和arm-qte压缩包后面或许会有日期尾缀,它是我们的发行或更新日期,请以光盘中实际日期尾缀为准。其中x86-qte-4.6.1主要是创建Creator开发平台,版本稍微低一些不会影响开发。
(7)解压安装busybox源代码
Busybox是一个轻型的linux命令工具集,在此使用的是busybox-1.13.3版本。用户可以从其官方网站下载最新版本(http://www.busybox.net)。
在工作目录/opt/FriendlyARM/tiny210/linux中执行:
#cd/opt/FriendlyARM/tiny210/linux
#tar xvzf /home/cherry/cherry_DataFile/linux/busybox-1.17.2-20101120.tgz
将创建busybox-1.17.2目录,内含相应版本的全部源代码。
说明:为了方便用户编译使用,我们做了一个缺省的配置文件fa.config。
(8)解压安装Linux示例程序
执行以下命令:
#cd/opt/FriendlyARM/tiny210/linux
#tar xvzf /home/cherry/cherry_DataFile/linux/examples-tiny210-20111118.tgz
将创建examples目录,并包含初学linux编程代码示例。
说明:20111118是我们的发行更新日期标志,请以光盘中实际日期尾缀为准。examples目录中的代码均为友善之臂自主开发,并全部以源代码方式提供,它们都是一些基于命令行的小程序。
配置和编译内核
Linux内核与Android内核使用的是同一份源码,但是配置不同,使用以下命令编译内核。
#cd/opt/FriendlyARM/tiny210/ linux-3.0.8
#cpmini210_linux_defconfig.config ;注意config前面有个”.”
你可以执行make menuconfig对配置进行修改,修改完成后,输出make进行编译:
#make
最后会在arch/arm/boot目录下生成zImage,将它替换掉SD卡images/Linux/下的zImage烧写到tiny210即可。
编译和运行arm版本的QtE-4.7.0(用户手册5.11)
和Qtopia-2.2.0十分类似,我们也为QtE-4.7.0的编译制作了现成的脚本build-all,进入源代码目录执行:
#cd/opt/FriendlyARM/mini210/linux/arm-qte-4.7.0
#./build-all
这个过程将十分漫长,根据机器配置不同,会有不同的编译时间,请耐心等待。
当顺利执行完毕,再运行mktarget脚本,将会从编译好的目标文件目录中,提取出必要的QtE-4.7.0库文件和可执行二进制示例,并打包为target-qte-4.7.0.tgz,把它在开发板的根目录下解压,就可以使用了,如下命令
#tar xvzftarget-qte-4.7.0.tgz–C /
这样,就会在/usr/local/目录下创建生成Trolltech目录,它里面包含了运行所需要的所有库文件和可执行程序。使用说明:因为目标板中预装的Linux已经包含了QtE-4.7.0,测试之前,你可以先删除原有的,它位于/usr/local/Trolltech目录,把该目录使用rm命令完全删除就可以了。要运行QtE-4..6.3,建议先停止正在运行的Qtopia-2.2.0,点“设置”中的“关机”可出现如下界面,点“Terminate Server”即可关闭Qtopia-2.2.0系统。
也可以使用其他的方法,比如在启动脚本/etc/init.d/rcS中注释掉qtopia启动项,再重新系统系统;或者使用killall命令杀死相关的进程(比较多;甚至是直接删除/opt目录中的所有内容重启。关闭qtopia-2.2.0之后,在命令行输入qt4命令,即可启动刚刚解压安装的QtE-4.7.0了,如图:
编译和运行x86版本的Qt-Extended-4.4.3(用户手册5.12.2)
以上两步按照用户手册上的步骤来,两个步骤都要等待蛮长时间。
接下来就是Qt creator中的操作了:
Qt creator中的交叉编译初始设置
注意:我的fedora16下的Qt creator是直接用yum来安装的,版本为4.8.0,版本不一样,可能导致下面的操作中的某些选项的位置不一样。
step1添加嵌入式版本的qmake路径
菜单->工具->选项->Qt4->手动设置->添加
路径为/usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin/qmake
step2添加交叉编译器
菜单->工具->选项->工具栏->手动设置->添加
/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-g++
注:如果路径为/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/bin/g++,有可能会导致构建的时候出错,不过到底是不是这个原因,还在探究中,现在不能下定论。
step3项目中的构建配置
如图所示,都选为嵌入式调试的Qt版本。
构建环境变量中的 PATH一值也需要注意,现备份一个目前没问题的参考:
/opt/FriendlyARM/toolschain/4.5.1/bin:/usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/cherry/.local/bin:/home/cherry/bin
注意:整个过程之前要先确认arm-linux-g++是否有正确安装,确认方法是在终端里输入arm-linux-g++ -v命令,如果显示版本信息则说明正确安装
说点感想吧:其实这种按照步骤来进行的文章是最没有技术含量的,以前安装各种vs、以及winCE的交叉编译环境的时候也是这样,无非就是一个操作手册,但是为什么要添加这个路径,而不是另一个路径,就需要更深入的知道其所然,现在linux下的功力还不够深厚,慢慢修炼吧