`
javasogo
  • 浏览: 1821982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MeeGo handset 1.1开发环境[4]:在SDK上实现Hello World

阅读更多

  我们会follow wiki的guide,通过QT Creator在模拟器上运行hello world程序,然后我们会对模拟器作进一步的探讨。

wiki上的参考:

  1. http://wiki.meego.com/Getting_started_with_the_MeeGo_SDK_for_Linux
  2. 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下安装MeeGo SDK for netbook &handset

    《在Windows XP下安装MeeGo SDK for netbook & handset的详细步骤》 MeeGo SDK,全称为MeeGo Software Development Kit,是专为...这个过程需要一定的计算机知识,但只要按照步骤细心操作,就能顺利搭建起开发环境。

    在Windows下搭建MeeGo开发环境

    在Windows环境下搭建MeeGo开发环境是一项技术性的任务,主要涉及到操作系统兼容性、文件系统格式、SDK安装、网络代理配置、目标与运行时环境创建、Qt Creator的配置以及模拟器加速等多个步骤。以下是对这些知识点的...

    Android_SDK开发范例完整版

    这种前所未有的关注度不仅体现在专业论坛如Java World上,也反映在Google官方的Developer Discussion Group中。这种全球性的热烈讨论表明了Android操作系统为开发者提供了一个公平的竞争平台,无论是在哪个地区或者...

    Android开发环境配置(pdf)

    ### Android开发环境配置详解 #### 一、Android平台概述 Android平台是由Google公司在2007年11月5日推出的,基于Linux内核的移动操作系统。它由操作系统、中间件、用户界面和应用软件四大部分组成,形成了一个开放...

    制作一个Meego镜像的方法小结

    其中,MeeGo作为一款由英特尔和诺基亚联合开发的操作系统,因其良好的性能及丰富的功能而受到不少用户的青睐。本文将围绕如何制作一个Meego镜像进行详细介绍,帮助开发者更好地理解和掌握这一过程。 #### 一、MeeGo...

    android sdk

    本文由kingwj6贡献 ...Android SDK 1.1r1 为开发环境) Java Development Kit(JDK)v6.0 以上 Eclipse 开发 IDE 程序 (本书所有范例皆以 eclipse-jee-ganymede-SR1-win32 版 本为编译环境) 自我检查 (ˇ)

    JIL widget system API specfication(Handset API)1.1 JIL Widget 系统API(终端侧API)1.1规范

    ### JIL Widget System API Specification (Handset API) 1.1 规范 #### 前言 欢迎阅读《JIL Widget系统API规范》。本规范文档旨在为开发者提供一个全面的技术指南,涵盖了一系列用于开发运行在终端设备上的Widget...

    Android介绍&开发环境搭建.ppt

    2. 安装Android Studio,这是Google官方推荐的集成开发环境,包含Android SDK和必要的开发工具。 3. 配置Android SDK,选择需要的API版本和工具。 4. 设置Android Virtual Device (AVD)用于模拟器测试,或者连接物理...

    android开发指南

    ### 第五章:Android程序:Hello World! - **创建第一个应用**:通过"Hello World!"程序,开发者可以熟悉基本的Android项目结构和生命周期。 - **文件详解**:了解Android Studio自动生成的各个文件,如...

    Handset WinDriver.rar

    《手持设备驱动程序开发详解——以Handset WinDriver为例》 在信息技术领域,硬件设备的正常运行离不开驱动程序的支持,尤其是手持设备(Handset),其小巧便携的特性对驱动程序有着更高的要求。本文将围绕"Handset...

    精讲Meego技术及其主要优势

    4. **2010年**:MeeGo在世界移动通信大会(MWC)上正式发布,标志着下一代Moblin操作系统的到来。 #### 五、总结 Meego是一个高度灵活且具有前瞻性的操作系统平台,旨在满足多样化的计算需求。通过整合Moblin和Maemo...

    Google Android SDK开发范例大全(完整版)

    由于有多个 SDK 更新,建议有意识地组织开发环境,以便在不同的 SDK 安装之间轻松地切换。SDK 包括: android.jar Java 归档文件,其中包含构建应用程序所需的所有的 Android SDK 类。 documention.html 和 docs ...

    WinSDK入门,对windows编程有一定帮助

    在Visual C++ (以下简称VC) 环境下,可以通过创建一个`Win32 Application`类型的项目来实现这一目标。 ##### 示例代码解读: ```cpp // Eg1: 最简单的窗口程序示例 int WINAPI WinMain(HINSTANCE hInstance, ...

    Android SDK 中文开发文档

    Android的开发环境同样十分丰富,它包括设备模拟器、调试工具、内存和性能分析工具,以及集成开发环境(IDE)插件,尤其是Eclipse的插件。这些工具极大地方便了开发者进行应用开发、调试和性能优化。 最后,文档的...

    中文版Android程序员向导

    #### 第五章:Android程序:HelloWorld! 1. **创建第一个应用**:通过HelloWorld项目,手把手教学如何创建、编译和运行一个简单的Android应用,熟悉基本的开发流程。 2. **文件详解**:分析HelloWorld项目中涉及的...

    文献综述Android系统原理及SDK配置.doc

    开发者可以使用Eclipse或Android Studio这样的集成开发环境(IDE)配合SDK进行应用程序的编写和测试。SDK还包含了Android API文档,帮助开发者理解和使用提供的接口。 早期的Android应用主要使用Java语言开发,通过...

    Android例子大全(带运行截图)

    在手机发展史上,Android为所有程序员提供了平等的起跑线,无论是在Java World论坛还是Google的Developer Discussion Group,都能看到关于Android开发的热烈讨论。 本章旨在引导读者快速熟悉Android的程序架构、...

Global site tag (gtag.js) - Google Analytics