首页 > 其他分享 >MeeGo handset 1.1开发环境[4]:在SDK上实现Hello World

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

时间:2023-08-04 23:35:30浏览次数:125  
标签:MeeGo meego 1.1 handset qthello ssh QT 模拟器


  我们会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,如果下图所示。

 

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

  增加后,按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的配置,如下图所示:

 

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

 

   这样target的运行环境就好了。打开我们的emulator,$ mad remote -r meego-handset-ia32-qemu-1.1.20101031.2201-sda-runtime poweron,或者使用qemugl的方式。然后在QT creator中左边工具栏有个三角的运行符号,按之,将会安装在emulator中,并运行之。如下图所示

 

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

二、 进一步使用目标环境

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 [email protected]:/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相关文章

标签:MeeGo,meego,1.1,handset,qthello,ssh,QT,模拟器
From: https://blog.51cto.com/u_9877302/6970023

相关文章

  • k8s部署DataEase1.16.0cluster模式
    1.下载官方helm  chart包下载地址:https://github.com/mfanoffice/dataease-helm/releases,当前最新为1.16.0#下载并解压helmchart包wgethttps://github.com/mfanoffice/dataease-helm/releases/download/1.16.0/dataease-1.16.0.tgztarxfdataease-1.16.0.tgzcddataease......
  • 大连人工智能计算平台——华为昇腾AI平台——高性能计算HPC的pytorch环境的软件升级—
       aarch64架构CPU下Ubuntu系统环境源码编译pytorch-gpu-2.0.1版本X86架构CPU下Ubuntu系统环境源码编译pytorch-gpu-2.0.1版本如何拉取指定CPU架构并且指定ubuntu版本并且指定cuda和cudnn版本的docker镜像如何拉取指定CPU架构并且指定ubuntu版本并且指定cuda和cudnn版本......
  • UVM:4.1.1 验证平台内部的通信
    1.两个components通信可以有如下方法:1)设置全局变量。2)设置public让外部访问。3)写一个新的class,uvm_object,用config_db(config_object)配置,被配置的components去吃这个新的class。但是都不好!!!!!!!!!!!!!!!!2.1)上面的方法如果加入阻塞和非阻塞的概念,会更复杂。2)scoreboard主动要求数据,又怎么实现......
  • 最完美WIN10_Pro_22H2.19045.3271软件选装纯净版VIP51.1
    【系统简介】=============================================================1.本次更新母盘来自UUP_WIN10_PRO_22H2.19045.3271。进一步精简优化调整。2.只为呈现最好的作品,手工精简优化部分较多。3.OS版本号为19045.3271。个别要求高的就下MSDN吧,里面啥功能都有。4.集成《DrvCeo......
  • 我的世界(MC) forge 1.19.3 开服教程
    Debian系统使用MCSManager9面板搭建MinecraftJava版MOD服务器的教程,本教程用的forge1.19.3服务端,用其他服务端的也可以参考一下。其他版本我的世界服务器搭建教程:https://blog.zeruns.tech/tag/mc/各种Minecraft服务端介绍和下载:https://blog.zeruns.tech/archives/626.html高性价......
  • Minecraft(我的世界) Fabric 1.19.3 服务器搭建教程
    Debian系统使用MCSManager9面板搭建MCJava版MOD服务器的教程,本教程用的Fabric1.19.3服务端,用其他服务端的也可以参考一下。视频教程:https://www.bilibili.com/video/BV1Zd4y1h7zG/我的世界(MC)Fabric1.19.3开服教程,新手小白教程其他版本我的世界服务器搭建教程:https://blog.ze......
  • Linux+MCSM9+Docker 搭建我的世界mohist1.18.2版服务器,MC开服教程
    Debian系统使用MCSManager9面板和Docker容器搭建MinecraftJava版私服的教程,本教程用的mohist1.18.2服务端,用其他服务端的也可以参考一下。mohist支持MOD和插件。视频教程:https://www.bilibili.com/video/BV1DF411N7Dv/Linux+MCSM9+Docker搭建我的世界Java版服务器,MC开服教程其他......
  • android-studio-2022.2.1.19-windows 系统要求
    AndroidStudio2022.2.1.19Windows系统要求AndroidStudio是一款被广泛使用的Android开发集成环境(IDE),它提供了丰富的工具和功能来简化Android应用程序的开发过程。然而,为了确保AndroidStudio能够正常运行和高效工作,您需要满足一定的系统要求。本文将介绍AndroidStudio2022.2.......
  • php:获取https证书的信息(PHP 8.1.1)
    一,代码:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960<?php//得到证书的信息functiongetCertInfo($url){    if(!ex......
  • 安装nginx 1.16.1版本
    vi/etc/yum.repos.d/nginx.repo[nginx-stable]name=nginxstablerepobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.key[nginx-mainline]name=nginxmainlinerepoba......