1.前言
在上一篇博客中讲到交叉打包的问题,但是很遗憾的是,目前做不到。
- 在window下打包的可执行程序,无法在Linux下执行,并且会出现core dumped的问题,目前无法解决
- 在Linux下可以通过build生成windows下的可执行程序,并且在windows下可执行,而且在windows下通过Inno Setup打包生成可安装程序
- 那接下来就是调研怎么在Linux系统中生成可执行程序。
2.Linux下生成可执行程序
2.1.准备工作
因为VS code9(以下简称VS)开发工具就是使用electron开发的,所以就在官网看了一下安装VS的安装程序。
的安装包,接下来就需要调研在Linux下怎么生成.deb安装包从上图可以看出在Linux系统下有两种安装包,也就是说后期为了支持不同的Linux系统,还需要生成不同的安装包,这个还待研究。由于我安装的Ubunt,所以就拿Ubunt来做实验。所以我是用的也是.deb格式以及怎么安装。
- Ubunt,Debian系统中使用.deb格式的安装包
- Red Hat,Fedora,SUSE系统下使用的.rpm安装包
2.2.生成.deb文件
2.2.1 创建文件夹
可以在任意目录下创建新的文件夹,有人喜欢在usr目录下,我是在桌面创建了一个soft文件夹,然后把我的的项目按照不同的文件去划分。
在soft文件下创建agentuser文件夹
2.2.2 在agentuser下创建文件目录
其目录结构如下:
- DEBIAN:大写,用来进行制作打包文件
- control:描述deb包的信息必须的文件
- usr:用户安装文件一般会存到这个文件下,安装后的一些配置文件,可执行文件等可能会存放到usr下不同的目录下
- share:共享文件夹
- applications:应用的配置信息,Ubuntu启动时会找到applications下的.desktop文件将其加载到应用中
- agentuser.desktop:桌面文件会生成到/usr/share/applications/,applications会根据文件中的配置将icon,bin等文件一起加载
- icons:图标文件生成到/usr/share/icons/
- icon.ico:图标文件
- bin:这个是最重要的部分,存放可执行程序。由于我build之后的项目是一个文件夹,里面不单单存在可执行文件,还有其他依赖文件,所以需要都放到该目录下,可以直接将build/linuxxxx 文件下的内容copy到lib中
2.2.3 定义control文件
package: dynarose
version: 1.0.0
architecture:amd64
maintainer: chenqingkun
description: Dynarose agent client
- pacakge:打包后的名称
- version:版本后
- architecture:系统
关于版本可以查看自己系统的版本号,可以通过cat /proc/version查看,如果系统对不上,打包就会失败
- maintainer:维护者/开发者
- description:描述
2.2.4 定义deb.desktop文件
[Desktop Entry]
Name=Dynarose
Comment=Dynarose User example
Exec=/usr/bin/dynarose
Icon=/usr/share/icons/icon.png
Terminal=false
Type=Application
X-Ubuntu-Touch=true
Categories=Development
2.2.5 打包deb包
通过cd切换到mydeb同级目录,执行打包命令。
sudo dpkg -b agentuser agentuser_1.deb
查看目录中,确实生成了文件agentuser_1.deb
2.2.6 安装deb文件
执行命令
sudo dpkg -i agentuser_1.deb
由于是deb文件,所以也可以双击执行安装
2.2.7 执行可执行文件
切到usr/bin目录下可以看到生成了可执行文件dynarose*文件
可以通过./dynarose执行文件,可以看到安装后的文件确实能正常执行。
当然这种启动方式是不合理的,我们需要从应用中启动该应用。
打开应用列表,可以查看到我们新安装的软件
双击执行