我们会follow wiki的guide,通过QT Creator在模拟器上运行hello world程序,然后我们会对模拟器作进一步的探讨。
wiki上的参考:
-
http://wiki.meego.com/Getting_started_with_the_MeeGo_SDK_for_Linux
- http://wiki.meego.com/SDK/Docs/1.1/Creating_Hello_World
一、通过QT Creator来创建
1. 在QT Creator中配置cross complie toolchain
在QT creator(在应用程序-》编程-》QT Creator)中的菜单Tools > Options > Qt4 > Qt Versions,增加target的编译:/usr/lib/madde/linux-i686/targets/meego-handset-ia32-1.1/bin/qmake,取一个名字吧,MeeGo IA32 4.7.0,如果下图所示。
增加后,按rebuild->apply/OK,QT Creator就增加这个交叉编译环境,我们可以增加其他的编译环境,例如
我也增加一个本地的也就是host的qmake,路径为:/opt/meego/meego-sdk-qt/bin/qmake,名字我起来MeeGo SDK QT,可以作为PC版本的编译。(这个可以不需要,如果我们之考虑MeeGo的handset版本)。
2. Hello World的创建project
步骤为:File > New File or Project. 选择Mobile Qt Application and click Choose,然后根据步骤点下去。自动创建了一个Project:qthello。编辑这个project的文件,可以从左边的工具栏中选取Edit,这些都是常见的IDE开发环境的东东。我们修改一下这个小例子,如下:
#include <QApplication>
#include <QLabel>
#include <QSystemInfo>
using namespace QtMobility;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSystemInfo s;
QLabel *label = new QLabel(QObject::tr("hello ").append(s.currentCountryCode()));
label->show();
label->resize(100,30);
return app.exec();
}
进行编译:qthello.pro实际是一个makefile文件,可以对里面进行修改,例如在这个例子中,增加如下两行,然后保存。
CONFIG += mobility
MOBILITY += systeminfo
3. Build
project,在build和run中选择build:
On Edit build configuration: line, select Add > Using Qt version "MeeGo sysroot".
Change Debug into MeeGo sysroot Release.
配置好后,可以进行编辑,在菜单的build下面,我们注意到这里几个目录,我们看到为target而build的路径,以及rpm软件包所在的位置。按了Build以后,完成编译。在bulid目录下有rpm的spec文件,我们在rrpmbuild中看到rpm包,已经在target中安装路径instroot。回头看看qthello.pro的文件,其中有target.path=/usr/local/bin,这样我们会在rppmbuild目录下面的instroot/usr/local/bin中看到rpm包所要安装的东西,其实通过spec,我们可以设置一些图标等内容,这在以前学习过。
4. 执行
QT creator提供了一些导入target的工具,我们使用的是emulator,就是之前利用qemu,MeeGo推荐使用mad-admin的方式。我们在模拟器中已经安装了ssh server,现在利用ssh将内容导入,并运行。roject,在build和run中选择run,填入名称,选择MeeGo Emulator,并在manage device configurations中,我们可以看到相关的ssh的配置,如下图所示:
这样target的运行环境就好了。打开我们的emulator,$ mad remote -r meego-handset-ia32-qemu-1.1.20101031.2201-sda-runtime poweron,或者使用qemugl的方式。然后在QT creator中左边工具栏有个三角的运行符号,按之,将会安装在emulator中,并运行之。如下图所示
二、 进一步使用目标环境
1.SSH和ssh -X
我们先通过$ mad remote -r meego-handset-ia32-qemu-1.1.20101031.2201-sda-runtime poweron开启模拟器。在qemugl的尝试中,以及在QT Creator中,我们知晓已经安装了open ssh server以及gdb server,另外我们可以通过mic-chroot来进行命令行的的交错编译(这个我比较喜欢)。编译的过程不在这里考虑。
在交错编译环境中获得的rpm包,可以同scp拷贝到模拟器的i㎎上,例如
scp -P 6666 /root/rpmbuild/RPMS/i386/kernel-2.6.35.3+-1.i386.rpm
root@127.0.0.1:/root/
。
ssh登录上模拟器,可以采用$ ssh meego@localhost -p 6666
或者
$ ssh root@localhost -p 6666
,密码都是meego。
我们也可以采用登录x windows的方式: ssh -X meego@localhost -p 6666
。这样当我运行一个带界面的程序,在这个例子,中例如qthello,可以在本机桌面生成,对于ubuntu,在右上角。(注意不是在模拟器上)。从这个小例子中,我们也可以了解到handset的MTF架构中,采用的全屏的方式。弹指显示方面有些不一样,handset的显示如上图,ssh -X的显示为:hello CN,CN为我本机的环境。在man中是这样介绍的:-X Enables X11 forwarding. 一般而言-X都是被禁止的,因为这又安全性的隐患,但在模拟器调测中很适用。
2.gdbserver和gdb
关于通过gdb server来调测,我们仍然利用ssh -X的参数,在本端启动UI程序。通过ssh -X登录模拟器,运行#gdbserver 127.0.0.1:13219 qthello,即哟女孩活gdbserver对qthello进行调测,由于qthello放入/usr/local/bin中,因此无须写路径。显示:
root@meego-handset-sdk:/# gdbserver 127.0.0.1:13219 qthello
Process qthello created; pid = 682
Listening on port 13219
在host上,启动gdb,$ gdb qthello,进入
$ gdb qthello
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
qthello: 没有那个文件或目录.
(gdb) target remote 127.0.0.1:13219
Remote debugging using 127.0.0.1:13219
warning: Could not load vsyscall page because no executable was specified
try using the "file" command first.
0x4b13d850 in ?? ()
(gdb) continue
可以使用run,continue等debug的命令。
三,在ssh中将app运行在qemu中。
从QT Creator中,我们知晓可以通过ssh将运行显示在模拟器上。我们通过ps查到,模拟器窗口为/dev/pts/1,但是目录了很久,都无法将输出重定向在pts/1上。所以此路不同,通过history,我们查到了QTCreator运行的命令:
sudo rpm -i --force qthello-0.0.1-1.i586.rpm && sudo sudo chmod a+x /usr/local/bin/qthello && source /etc/profile && export DISPLAY=:0
&& sudo su -m meego -c 'xhost +
'; /usr/local/bin/qthello ;echo Ꭰ
步骤如下:
1. 打开ssh,例如ssh root@localhost -p 6666,
2. 此前,在通过QtCreator中,已经将qthello的rpm下载到i㎎中,并已经安装好.
3. 在ssh的命令行中,输入:# export DISPLAY=:0
,这样,设置好环境,可以通过运行# qthello或者# /usr/local/bin/qthello,就可以在模拟器中显示。
相关链接:我的MeeGo/Moblin相关文章
分享到:
相关推荐
windows xp/windows 7下meego操作系统虚拟机。用于meego应用程序开发。
本文由kingwj6贡献 ...Android SDK 1.1r1 为开发环境) Java Development Kit(JDK)v6.0 以上 Eclipse 开发 IDE 程序 (本书所有范例皆以 eclipse-jee-ganymede-SR1-win32 版 本为编译环境) 自我检查 (ˇ)
由于有多个 SDK 更新,建议有意识地组织开发环境,以便在不同的 SDK 安装之间轻松地切换。SDK 包括: android.jar Java 归档文件,其中包含构建应用程序所需的所有的 Android SDK 类。 documention.html 和 docs ...
Within minutes, “Hello, Android” will get you creating your first working application: Android’s version of “Hello, World.” From there, you’ll build up a more substantial example: an Android ...
Within minutes, "Hello, Android" will get you creating your first working application: Android's version of "Hello, World." From there, you'll build up a more substantial example: an Android Sudoku ...
WinSDK入门,对windows编程有一定帮助
1.1. About this Document ...............5 1.2. Who this document is for...........5 1.3. Readers Comments ..................5 1.4. Related Documents..................6 2 Technical Overview ......
Android操作系统顶着 Google与Open Handset Alliance 的光环,让很多程序员在Android手机还没上市之前,就开始紧追着官方文档、Early SDK 版本更新, 这是IT业界罕见的现象,因为大家都抱持着“不想输在起跑点上”的...
Android操作系统顶着Google与Open Handset Alliance的光环,让很多程序员在Android手机还没上市之前,就开始紧追着官方文档、Early SDK版本更新,这是IT业界罕见的现象,因为大家都抱持着“不想输在起跑点上”的心态...
Handset WinDriver.rar
Android 操作系统顶着Google与Open Handset Alliance的光环,让很多程序员在Android手机还没上市之前,就开始紧追着官方文档、Early SDK版本更新,这是IT业界罕见的现象,因为大家都抱持着“不想输在起跑点上”的...
Within minutes, Hello, Android will get you started creating your first working application: Android's version of "Hello, World." From there, you'll build up a more substantial example: an Android ...
Mobile Handset Design
Handset_USB_Driver_32_v4.0.0
Android操作系统顶着Google与Open Handset Alliance的光环,让很多程序员在Android手机还没上市之前,就开始紧追着官方文档、Early SDK版本更新,这是IT业界罕见的现象,因为大家都抱持着“不想输在起跑点上”的心态...
第2章 搭建Android开发环境 2.1 Android开发环境要求 2.2 JDK的安装和配置 2.2.1 安装JDK 2.2.2 配置JDK 2.3 Android SDK的下载和安装 2.3.1 下载Android SDK 2.3.2 安装Android SDK 2.3.3 创建Android虚拟设备 2.4 ...
Handset USB Driver 32 v4.0.0
华为驱动,一般的型号都支持,能极大方便刷机和root。
Handset+WinDriver
Android 操作系统顶着Google与Open Handset Alliance的光环,让很多程序员在Android手机还没上市之前,就开始紧追着官方文档、Early SDK版本更新,这是IT业界罕见的现象,因为大家都抱持着“不想输在起跑点上”的...