图解如何将Ubuntu上的Qt程序交叉编译出可在ARM平台运行的程序(五部曲)
(原创作品,转载时请注明出处,商业用途前应征得作者同意)
作者: devinoy(百度用户)
日期:2012-10-16
版本:V1.00
Ubuntu(以ubuntu12.04为例,下同)下Qt Creator的安装
1.1 点击Ubuntu桌面左边的Ubuntu Software Center(乌邦图软件中心)图标。
点击弹出界面上方的All Software。
1.3 点击弹出界面左边的Developer Tools。
点击弹出界面中的Qt Creater,并屏幕指引安装Qt Creator(以Qt Creator 2.4.1 Based on Qt 4.8.0(32 bit)为例,下同)。
在Qt Creator中添加ARM平台编译环境设置
启动Qt Creator,点击在主界面菜单栏中的Options。
点击弹出界面中的Build&Run。
点击弹出界面中先后点击Qt Versions、Add。
2.4 在弹出的Select a qmake executable界面进入Qt4.7(以qt-4.7.1为例,下同)的bin目录并选中其中的qmake,然后点击右下方的Open退出。
No qmlviewer installed问题的解决
添加ARM平台编译环境的设置后可能出现“No qmlviewer installed”告警信息,如下图:
这是因为没有安装qmlviewer或qmlviewer安装后的可执行文件没有处于qt-4.7.1/bin目录下,针对后一种情况只需从qmlviewer的安装目录(一般在/usr/bin目录下)里将qmlviewer, qmlpuppet, qmlprofiler, 和qmlplugindump复制到qt-4.7.1/bin目录下。而针对未安装qmlviewer的情况,安装方法如下:在ubuntu12.04中打开linux终端,输入以下命令:
# apt-get install qt4-qmlviewer
注意: qmlviewer的默认安装目录为/usr/bin
安装qmlviewer后重新添加ARM平台编译环境的设置,“No qmlviewer installed”告警信息消失。
构建所有项目(Build All)
点击Build & Run界面右下方的Details按钮展开下一界面,在该界面中点击Build All构建所有项目,构建完后,先后点击下方的Apply、OK按钮保存设置。
添加编译工具链
在上述的Build & Run界面中先后点击Qt Versions、Add、GCC。
添加ARM交叉编译器、调试器路径(注意:前提是现在相关路径安装了ARM交叉编译器,下图仅为举例)
最后点击界面下方的Apply、OK按钮保存设置。
在Qt Creator 中交叉编译出在ARM平台上的可执行程序
3.1 构建设置(Build Settings)
在Qt Creator中新建或打开一个项目文件,点击界面左边的Project,在弹出的构建设置(Build Setting)界面中展开编辑构建配置(Edit build configuration),并选择ARM交叉编译器。
3.2 运行设置(Run Settings)
在Qt Creator中新建或打开一个项目文件,点击界面左边的Project,在弹出的界面中点击运行设置(Run Settings)。
3.3 构建项目,即交叉编译出在ARM平台上的可执行程序
点击菜单栏Build à Clean All à Build All。
构建后在项目所在目录生成一个相应的release文件夹(如:XXX-build-desktop-Qt_4_7_1_qt-4_7_1_Release文件夹),而构建生成的可执行文件就在其中。 将该可执行文件通过Telnet、Ftp、Linux终端、SD卡、或U盘等方法传到开发板的/usr/sbin目录中,如果使用nfs系统,只需将该可执行文件复制相关目录即可。
在开发板上部署Qt4.7
所谓部署就是提取运行目标Qt4.7应用程序时必要Qt4.7库文件(如/opt/qt-4.7.1中的imports, lib, plugins, qtc-qmldbg, qtc-qmlobserver, translations等5个文件)存放在开发板的相关目录下(如/opt/qt-4.7.1目录)。
设置开发板中Qt4.7所需的环境变量
先编写一个环境变量设置脚本(该脚本相关内容的编写可参照开发板供应商提供的配套资料中的相关内容),再将该脚本设置为可执行权限,最后运行该脚本。在开发板linux终端输入运行该脚本文件的命令时,命令格式如下:
# . 脚本文件名
注意:命令行中的“.”和后面的文件名有一空格。
在开发板运行交叉编译出来的可执行文件
在开发板的linux终端输入相关命令:
# 可执行文件名 –qws
----------------- THE END ----------------