在MeeGo handset 1.1开发环境[4][5]中,我们利用QtCreator工具生成了rpm包。我们去看linux的rpm包,对于某个软件包有两个rpm包,一个是*.rpm,一个是*.src.rpm,我们应当将源程序也进行打包,这样在代码管理上会好很多。此外,可能是习惯问题,如果可以脱离QtCreator,直接在linux的命令行中进行编译,打包,我觉得更加方便和自由。本次,我们将记录如何在命令行中将程序打成*.src.rpm和*.rpm包。

  实际以前我们在moblin也探讨过这个问题,在MeeGo Handset SDK 1.1的环境中,利用rpmbuild,我们在作一次。我们还是利用rpmbuild的缺省目录~/rpmbuild。下面是相关的步骤。

步骤一:建立需打包的project小例子

  利用mad建立我们的project,我们可以现查看一下mad可以创建那些类型的project,然后根据需要选择创建。

$ mad pscreate -l
TEMPLATE NAME    TYPE     DESCRIPTION
lib-simple       lib      Simple example for C/C++ library
python           python   Simple example for Python (Qt) application
qt-empty         prog     Empty project for Qt application
qt-lib-simple    lib      Simple example for Qt library
qt-simple        qtprog   Simple example for Qt application
simple           prog     Simple example for C/C++ application

$ mad -t meego-handset-ia32-1.1 pscreate -t qt-simple test-rpm-0.0.1

  请注意这个project的名字,我们将version信息也加入,这也是rpm包命名的标准方式。在后面我们也会看到spec文件中对文件夹的缺省命名,提供version信息,可以是我们更好的管理不同版本当然源代码,同时也方便打patch。

$ cd test-rpm-0.0.1/
$ mad -t meego-handset-ia32-1.1 qmake

  通过这一步,可以生成Makefile,打开Makefile文件,我们做一些小修改,将涉及绝对路径的修改为相对路径,例如该文件夹的绝对路径在/workspace/meego/test/qt/test-rpm-0.0.1,我们可以查询这个路径,或者查询install,是在target中install desktop文件时会写成绝对路径。因为我们将利用rpmbuild的缺省目录,而且不同环境,安装的绝对路径不一样,所以需要修改。

  这是我们可以直接通过make命令来进行编译。由于是实验打包的情况,我只在*.desktop文件中修改了图标的描述名字,并将源文件中的Hello, World改为其他文字。

步骤二:打包

  当我们确保编译没有出现问题,包括在target上调测后也没有问题,我们准备封装发布的rpm和src.rpm。采用make clean将所有编译内容清除后,将test-rpm-0.0.1/打包为test-rpm-0.0.1.tar.gz。接着我们编写rpm的spec文件,可以直接利用之前QtCreator编写的其他spec文件过来修改,spec文件可以参考:

  • http://wiki.meego.com/Packaging/Guidelines
  • Moblin:kernel编译和rpm打包(二):RPM打包

  下面是这个例子的spec文件test-rpm.spec的内容

$ cat test-rpm.spec
# no post install
#%define __os_install_post %{nil}
# no strip
#%define __strip /bin/true
# no debug package
#%define debug_package %{nil}
# disable automatic dependency processing
#AutoReqProv: no

Name:           test-rpm
Version:        0.0.1
Release:        1
License:        GPL

Summary:        Wei: Test for Meego handset 1.1 *.src.rpm and *.rpm
#Url:            <insert url tag>
Group:          Qt/Qt Mobility
Source0:        %{name}-%{version}.tar.gz

#BuildRequires:  pkgconfig(QtCore)
#BuildRequires:  libqt-devel

%description
Wei test for Meego handset SDK 1.1 for package *.src.rpm and *.rpm.

%prep
%setup -q

%build
# Add here commands to configure the package.
#%qmake
#qmake -makefile -nocache QMAKE_STRIP=: PREFIX=%{_prefix}

# Add here commands to compile the package.
#make %{?jobs:-j%jobs}
#make %{?_smp_mflags}
make

%install
# Add here commands to install the package.
#%qmake_install
make install INSTALL_ROOT=%{buildroot}

%files
%defattr(-,root,root,-)
%{_prefix}/*

  我们将在rmpbuild的标准目录下来进行,可以直接执行rpmbuild -ba test-rpm.spec,运行会报错,但是会生成正确的缺省路径~/rpmbuild,在该目录下会有以下的目录BUILD/  BUILDROOT/  RPMS/  SOURCES/  SPECS/  SRPMS/,我们将test-、rpm.0.0.1.tar.gz文件copy到SOURCES目录下,将test-rpm.spec文件copy到SPECS/下,进入~/rpmbuild/SPECS目录,执行命令rpmbuild -ba test-rpm.spec,则源文件解压后将存放在BUILD/路径下,在目标机的解压后的文件将在BUILDROOT/下,test-rpm-0.0.1-1.i386.rpm将存放在RPMS/i386/路径下,源文件rpm包test-rpm-0.0.1-1.src.rpm位于SRPMS/。

步骤三:检验

  我们打开模拟器或者目标机,通过网络,将rpm传递上去

$ scp -P 6666 /home/wei/rpmbuild/RPMS/i386/test-rpm-0.0.1-1.i386.rpm meego@localhost:/home/meego

  源文件rpm包用于归档保存,我们删除~/rpmbuild,然后在本地机器进行rpm -ivh xxxx.src.rpm后,我们看到在~/rpmbuild中相关源代码的恢复。我们通过ssh登录模拟器,在/home/meego下,以sudo的身份对rpm进行安装rpm -ivh test-rpm-0.0.1-1.i386.rpm,删除时只需要rpm -e test-rpm即可。安装之后我们可以看到桌面如下左图,点击图片,如右图:

相关链接:我的MeeGo/Moblin相关文章

MeeGo handset 1.1开发环境[6]:封装*.src.rpm和*.rpm相关推荐

  1. MeeGo handset 1.1开发环境[1]:安装MeeGo1.1

    上周MeeGo发布了1.1的新版本,在netbook上安装看看.界面似乎没有什么修改.meego.com上发布的博客, http://meego.com/community/blogs/valhall ...

  2. MeeGo handset 1.1开发环境[5]:一个desktop小应用

    在MeeGo handset 1.1 SDK上实现Hello World中,我们进一步讨论了如何使用ssh client和hanset runtime模拟器之间进行互动: 通过QT Creator作为 ...

  3. MeeGo handset 1.1开发环境[3]:直接使用Qemugl

    在安装MeeGo 1.1 SDK中使用的是MeeGo 1.1新提供的工具mad-admin,从安装的过程可知,其依赖于qemugl.但是这个工具不能使用最新的img,runtimes已经限定,不能更换 ...

  4. MeeGo handset 1.1开发环境[2]:安装MeeGo 1.1 SDK

    在安装MeeGo SDK 1.1,尤其是模拟器MeeGo SDK runtime的时候出现问题,搞得我都怀疑是否是我的Fedora或者阿土比MeeGo的指引要高,装机器都装了N次了,安装过程都没有发现 ...

  5. meego Java_meego 1.1 开发环境的搭建及问题解决方法

    折腾了大半天终于把meego 1.1的开发环境安装在了ubuntu 10.10上了,这个过程的艰难也充分证明meego的道路可能还会很艰难. 1.meego SDK安装 (1),获取gpg key,不 ...

  6. axios请求封装与开发环境proxyTable代理

    axios请求封装与开发环境proxyTable代理详解 一.axios请求封装 1. axios安装与使用 1.1 安装 1.2 引入 1.3 环境切换 1.4 设置请求超时 1.5 请求头设置 1 ...

  7. meego用linux软件下载,MeeGo移动应用程序开发入门

    [IT168技术]我们曾经讲过"在QT SDK下构建MeeGo Touch开发环境",在Windows系统上运行MeeGo SDK,在主流linux系统上运行MeeGo SDK , ...

  8. Windows下Eclipse配置基于MinGW的C/C++开发环境

    Eclipse安装CDT及其他插件的方法 1.搜索CDT线上安装地址 进入Ecllipse插件下载官网https://www.eclipse.org/cdt/downloads.php,在官网页面列表 ...

  9. 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)

    本文适合 Vue 的初学者,以及对 webpack 不熟悉的同学阅读.前提是你要会用基本的命令行. Node 和 NPM,以及掌握 ES2015 的基础知识.本文都是在 macOS 环境下运行,要求使 ...

最新文章

  1. 既往出现中性粒细胞减少的患者可以重新应用依那西普
  2. 计算机音乐刚好遇见你乐谱,刚好遇见你曲谱_刚好遇见你乐谱
  3. git bash 界面修改成linux界面
  4. 软件测试的缺陷管理系统有哪些,简述:一款优秀的缺陷管理系统有哪些功能特点!...
  5. 摇篮善良:仅添加包装用于战争
  6. Postgresql中的hybrid hash join(无状态机讲解)
  7. CentOS 7.3 系统安装配置图解教程
  8. 9206晚自习点歌功能拆解 图片加载 控件显示与隐藏等等
  9. Physically Based Specular for Artists
  10. office另存为pdf的加载项_Word怎样转换成PDF
  11. 蓝牙耳机自动接听软件_使用蓝牙耳机接听Skype呼叫
  12. Python学习手册-笔记2
  13. 在Ubuntu上使用MySQL设置远程数据库优化站点性能
  14. JConsole可视化工具介绍
  15. pyodbc 测试连接 SQL Server 数据库
  16. 第一门慕课计划——在广东海洋大学推广MOOC学习
  17. unbuntu16.4 64位安装spade+XMPP教程
  18. 使用 TestFight 构建 Beta 测试版本
  19. IPCamera WiFi配置方案
  20. Centos7系统下使用Docker部署SpringBoot项目及安装Mysql

热门文章

  1. 【网络安全】免费DDOS攻击测试工具
  2. 牛客网——华为题库(41~50)
  3. C语言之内存模型以及动态内存分配
  4. 杰理之芯片使用注意事项【篇】
  5. 软件测试工程_绪论笔记
  6. cannot do a partial commit during a merge.
  7. 月工资计算日薪计算加班公式
  8. SD卡照片删除怎么恢复?教程全解
  9. 一般使用什么工具压缩视频
  10. java 本月剩余天数_java基础 计算今天距本月最后一天还剩多少天