7 应用开发

7.1 QT5 开发

7.1.1 安装QT CREATOR

本次安装的QT CREATOR 为apt源上的

sudo apt-get install qtcreator

7.1.2 配置ARM 平台的Qt Creator Kits

安装成功后打开QT CREATOR, 打开Qt Creator 界面,找到Tools (工具)》Options (选项)

QTCREATOR_OPTION

切换到Qt Versions, 添加qmake

QTCREATOR_QMAKE

切换到Compilers,添加交叉编译工具

QTCREATOR_GCC

QTCREATOR_GCC

QTCREATOR_GCC

QTCREATOR_GCC

切换到Debuggers,添加调试工具

QTCREATOR_GDB

最后切换到Kits,添加如下指出的选项,即可完成ARM 平台的Qt Creator Kits配置

QTCREATOR_KIT

7.1.3 验证ARM 平台的Qt 编译

打开QT源码中自带的examples文件夹中的examples.pro 项目文件

QTCREATOR_OPEN_PROJECT

选择之前添加的ARM Kit

PROJECT_CHOOSE_KIT

进入工程界面后点击build all 即可编译工程并生成 ARM LINUX 平台的 ELF 可执行文件

QTCREATOR_BUILD

7.2 应用打包

dpkg 是"Debian Packager "的简写。为 "Debian" 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自"Debian"的"Linux "发行版都使用 "dpkg",例如 "Ubuntu"、"Knoppix "等。

dpkg是Debian软件包管理器的基础,它被伊恩·默多克创建于1993年。dpkg与RPM十分相似,同样被用于安装、卸载和供给.deb软件包相关的信息。

dpkg本身是一个底层的工具。上层的工具,如APT,被用于从远程获取软件包以及处理复杂的软件包关系。 "dpkg"是"Debian Package"的简写。

7.2.1 deb包的目录结构

deb包本身有三部分组成

组成 详细
数据包 包含实际安装的程序数据,文件名为“data.tar.XXX”
安装信息及控制包 包含deb的安装说明,标识,脚本等,文件名为“control.tar.gz”
二进制数据 包含文件头等信息,需要特殊软件才能查看

deb包的目录结构如下所示

|----DEBIAN

       |-------control

       |-------postinst(postinstallation)

       |-------postrm(postremove)

       |-------preinst(preinstallation)

       |-------prerm(preremove)

       |-------copyright(版权)

       |-------changlog(修订记录)

       |-------conffiles

|----usr

|----...

control文件

主要描述软件包的名称(Package),版本(Version),Installed-Size(大小),Maintainer(打包人和联系方式)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。

字段 用途 例子/其他
Package 程序名称 中间不能有空格
Version 软件版本
Description 程序说明
Section 软件类别 utils, net, mail, text, x11
Priority 软件对于系统的重要程度 required, standard, optional, extra等;
Essential 是否是系统最基本的软件包 yes/no,若为yes,则不允许卸载(除非强制性卸载)
Architecture 软件所支持的平台架构 i386, amd64, m68k, sparc, alpha, powerpc等
Source 软件包的源代码名称
Depends 软件所依赖的其他软件包和库文件 若依赖多个软件包和库文件,采用逗号隔开
Pre-Depends 软件安装前必须安装、配置依赖性的软件包和库文件
Recommends 推荐安装的其他软件包和库文件
Suggests 建议安装的其他软件包和库文件

preinst文件

在Deb包文件解包之前(即软件安装前),将会运行该脚本。可以停止作用于待升级软件包的服务,直到软件包安装或升级完成。

postinst文件

负责完成安装包时的配置工作。如新安装或升级的软件重启服务。软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以“#!/bin/sh”为首行。

prerm 文件

该脚本负责停止与软件包相关联的daemon服务。它在删除软件包关联文件之前执行。

postrm文件

负责修改软件包链接或文件关联,或删除由它创建的文件。软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以“#!/bin/sh”为首行

7.2.2 制作deb包流程

新建文件夹,假设名字为mydeb 在mydeb内新建一个DEBIAN文件夹,此文件夹内存放控制信息 在DEBIAN里新建一个文本文档, 名为control, 编码为utf-8, 内容如下所示:

Package: MagicWork
Version: 4.0.0
Architecture: arm
Section: utils
Priority: optional
Maintainer: Co-Trust
Homepage: http://www.co-trust.com.

注意版本号Version需要根据软件更新升级做修改

然后我们创建对应的二进制包安装完成后的路径信息放置在DEBIAN的同级目录下,也就是把当前的目录当成根(“/”)目录,制作完成后安装时,当前目录下除了DEBIAN目录的其他目录都会被默认安装到系统的“/”目录下。

.
├── DEBIAN
│   └── control
└── usr
    ├── bin
    │   ├── MagicWork
    │   └── NightWatchMan
    └── lib
        ├── libHMIDevice.so -> libHMIDevice.so.1.0.0
        ├── libHMIDevice.so.1 -> libHMIDevice.so.1.0.0
        ├── libHMIDevice.so.1.0 -> libHMIDevice.so.1.0.0
        ├── libHMIDevice.so.1.0.0
        ├── libHMIService.so -> libHMIService.so.1.0.0
        ├── libHMIService.so.1 -> libHMIService.so.1.0.0
        ├── libHMIService.so.1.0 -> libHMIService.so.1.0.0
        ├── libHMIService.so.1.0.0
        ├── libkwmf.a
        ├── libprinter.so -> libprinter.so.1.0.0
        ├── libprinter.so.1 -> libprinter.so.1.0.0
        ├── libprinter.so.1.0 -> libprinter.so.1.0.0
        ├── libprinter.so.1.0.0
        ├── libWindingMachineModule.so -> libWindingMachineModule.so.1.0.0
        ├── libWindingMachineModule.so.1 -> libWindingMachineModule.so.1.0.0
        ├── libWindingMachineModule.so.1.0 -> libWindingMachineModule.so.1.0.0
        └── libWindingMachineModule.so.1.0.0

当放置文件完成后,使用dpkg进行打包生成deb格式的安装包

dpkg -b mydeb/  MagicWork.deb

7.2.3 dpkg 常用命令

  • 打包 dpkg -b . xxx 第一个参数为将要打包的目录名(.表示当前目录),第二个参数为生成包的名称
dpkg -b . xxx.deb
  • 安装(解包并配置) dpkg -i|--install <.deb file name>
dpkg -i xxx.deb
  • 卸载 dpkg -r|--remove ,删除包,但保留配置文件
dpkg -r xxx