基础是你已经安装了Ubuntu,以及相关软件:
超级终端minicom 及C/C++ compiler environment。
在Ubuntu上可使用下面终端命令安装 minicoom和编译环境。
#sudo apt-get install minicom
#sudo apt-get install build-essential
Step 1:
将光盘 Linux 目录中的 arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 复制到 Lubuntu的当前目录下,执行解压命令:
#sudo tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C /
注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。
这样 arm-linux-gcc 的相关文件就Copy到root用户的Opt目录中
Step 2:
把编译器路径加入系统环境变量,运行命令
#sudo gedit ~/.bashrc
编 辑 ~/.bashrc 文 件, 注 意 “ bashrc ” 前面 有 一 个 “ . ”,修 改 最 后 一 行 为 exportPATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin注意路径一定要写对,否则将不会有效。
如图,保存退出。注意一定是~/.bashrc,而非/root/.bashrc
重新登录系统(不必重启机器,开始->logout即可),使以上设置生效,在命令行输入arm-linux-gcc –v,会出现如下信息,这说明交叉编译环境已经成功安装。
Step 3:
编译链接 arm-qte-4.7.0
1) 解压包到自己制定的目录,例如 arm-qte-4.7.0
2) 终端中运行 ./build-all
(首先,注意不能双击运行,必须在终端中运行;其次,不使用 sudo)
大约要安装2个小时
当运行到出现如下提示后:
cd src/tools/bootstrap/ && make -f Makefile install
make[1]: 正在进入目录 `/home/administrator/arm-qte-4.7.0/qt-everywhere-opensource-src-4.7.0/src/tools/bootstrap'
make[1]: 没有什么可以做的为 `install'。
make[1]:正在离开目录 `/home/administrator/arm-qte-4.7.0/qt-everywhere-opensource-src-4.7.0/src/tools/bootstrap'
cd src/tools/moc/ && make -f Makefile install
make[1]: 正在进入目录 `/home/administrator/arm-qte-4.7.0/qt-everywhere-opensource-src-4.7.0/src/tools/moc'
mkdir: 无法创建目录 “/usr/local/Trolltech”: 权限不够
make[1]: *** [install_target] 错误 1
make[1]:正在离开目录 `/home/administrator/arm-qte-4.7.0/qt-everywhere-opensource-src-4.7.0/src/tools/moc'
make: *** [sub-moc-install_subtargets-ordered] 错误 2
./build-all: 第 12 行: cd: /usr/local/Trolltech/QtEmbedded-4.7.0-arm: 没有那个文件或目录
在终端中运行:
cd qt-everywhere-opensource-src-4.7.0
sudo make install
加入环境变量(步骤类似Step2,在最后一行再加入)
#sudo gedit ~/.bashrc
export PATH=$PATH: /usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin
Step 4:
下载和安装 Qt SDK for Open Source C++ development on Linux/X11 32-bit - Offline Installer
(已经上传到我们的共享目录中)
On Linux/Unix, you need to make the file executable in order to run it. You can either do this with your desktop's file manager or, at the command line, type:
在终端中运行:
chmod u+x Qt_SDK_Lin32_offline_v1_1_2_en.run
You should now be able to execute the file as normal. You can do this from the command line by typing:
在终端中运行:
./Qt_SDK_Lin32_offline_v1_1_2_en.run
随即进行图形化的Qt_SDK的安装(自己定制全安装),其包含了 creator,designer等等。
Step 5:
配置QT Creator以支持开发和在desktop和arm上程序的发布。
在打开的QT Creator进入tools -> options,在Qt4下加入支持ARM的qmake命令的路径,如图:
然后要将交叉编译的工具链加入到Tool Chains,如下图:
以后新建项目QT Creator时会自动包含对ARM的编译选项。
如果对ARM的编译失败,可以打开Projects,选择ARM的选项,展开build environment,检查PATH一项中是否有/usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin,没有则加入;注意分隔用冒号。
检查编译后的文件(例如HelloARM)是否在ARM上运行的方法:
#file HelloARM
显示出带有ARM的信息即可。
将该文件拷贝到SD卡中可以通过minicom在板子上运行。
Step 6:
配置超级终端以及通过超级终端调试
在终端输入minicom –s
配置端口号为ttyS0,Hardware Flow Control改为No;然后退出(不是退出minicom);minicom初始化后显示root命令行即成功。
如果不成功端口号改为ttyS1重试。
要保存配置,用sudo minicom进入进行配置。
要用minicom的指令退出,强行关闭终端会让端口无法释放。
通过minicom运行在SD卡上的程序步骤:
#cd sdcard
#./HelloARM –qws&
可以在板子上看到运行结果。
(目前存在的问题,无法进行输入和交互. ) maybe
1) 需要配置目标机的环境
2) 需要准备一个sh文件
未完待续…
Step 7:
部署到arm上直接运行
基本原理是:修改宿主机上arm 版本的 QtE-4.7.0,然后部署到目标机(arm板)上。
宿主机上QtE-4.7.0的目录是: /usr/local/Trolltech/QtEmbedded-4.7.0-arm
假设
1) 我们编译的arm应用程序位于当前用户的 Fshy_Arm_Build目录, 其包括两个文件:input.txt 和 test
2) 我们已经在 QtE-4.7.0的demos目录中建立了应用程序的目录wudang/fshy
1. 进入我们的程序的输出目录:
# cd Fshy_Arm_Build
2. 将input.txt 和 test 文件copy到目录
# sudo cp input.txt test /usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/wudang/fshy
3. 编辑部署文件,config.xml
该文件位于 demos/embedded/fluidlauncher目录下
# sudo gedit /usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/embedded/fluidlauncher/config.xml
修改后的文件如下:
<demolauncher>
<demos>
<example filename="../embeddedsvgviewer/embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer.png" args="../embeddedsvgviewer/shapes.svg"/>
<example filename="../styledemo/styledemo" name="Stylesheets" image="screenshots/styledemo.png"/>
<example filename="../../deform/deform" name="Vector Deformation" image="screenshots/deform.png" args="-small-screen"/>
<example filename="../../pathstroke/pathstroke" name="Path Stroking" image="screenshots/pathstroke.png" args="-small-screen"/>
<example filename="../../wudang/fshy/test" name="String Searching" image="screenshots/wudang.jpg" args="-small-screen"/>
<example filename="../../../examples/widgets/wiggly/wiggly" name="Wiggly Text" image="screenshots/wiggly.png"/>
<example filename="../../../examples/painting/concentriccircles/concentriccircles" name="Concentric Circles" image="screenshots/concentriccircles.png"/>
</demos>
<slideshow timeout="60000" interval="10000">
<imagedir dir="slides"/>
</slideshow>
</demolauncher>
注意:
1)需要根据应用程序,准备一张Logo图片,其大小需要符合要求,格式可以是jpg或者png等,例如 wudang.jpg
2) 将其copy到demos/embedded/fluidlauncher/screenshots
4. 回到本用户的根目录,修改 mktarget 文件,并打包。
# cd ~ # cd arm-qte-4.7.0 # gedit mktarget
在文件中添加需要打包的文件:
usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/wudang/fshy/test
usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/wudang/fshy/input.txt
usr/local/Trolltech/QtEmbedded-4.7.0-arm/demos/embedded/fluidlauncher/screenshots/wudang.png
EOF `
tar cfvz $TARGET_DIR/target-qte-4.7.0.tgz $list
关闭文件并保存,运行mktarge
# sudo ./mktarget
查看包文件target-qte-4.7.0.tgz中你所期望的文件是否已经都有。
Ok的话,将该文件拷贝到SD卡中。
5. 使用串口进行部署
清除目标机(arm板)上原有的
# rm -r /usr/local/Trolltech
解压SD卡中的到目标机
# tar xvzf /sdcard/target-qte-4.7.0.tgz -C / 6. 在目标机上启动 Start Qt4.7.0
可以看到我们应用程序的logo,点击该图标即可启动我们的应用程序。
Step 8:
如何支持交叉调试
未完待续…
基于网络来部署和控制目标机器
1)以太网络设置
在子类“友善之臂”程序中,点“网络设置”图标打开相应的界面,进行常见的网络参数设置:
静态的 IP 地址 – 出厂缺省为 192.168.1.230
子网掩码 – 出厂缺省为 255.255.255.0
网关 – 出厂缺省为 192.168.1.1
DNS解析服务器IP – 出厂缺省为 192.168.1.1,和网关地址相同
网卡的 MAC 地址 – 此地址由驱动程序通过软件设定,是可以修改的
点“Save”按钮可以保存以上参数,并马上生效,重新启动开发板也可以保留此次的更改设定,与该设置程序相对应的参数文件为/etc/eth0-setting。
2)如何使用 Telnet 登录开发板
开发板开机正常运行后,其实已经启动了一个 Telnet 服务,因此用户也可以通过网络远程登录开发板。
在宿主机的终端窗口输入
# telnet 192.168.1.230
以root用户登录目标机系统 (不需要密码)
# root
Others:
sudo nautilus