利用CLion和QT5.9.1在Ubuntu环境下编写了一款测试软件,主要是基于ROS对产品的一些操作。
本文解决问题:在自己电脑上编译生成可执行文件之后,打开没有任何问题,但是如何安装在别人电脑上直接使用?
自己电脑的环境:
图片中“KyBotMonitor”就是可执行文件,在命令行各种输入./KyBotMonitor 就可以直接运行了。
但是直接移植到别人的电脑上运行,却运行不起来,因为缺少了相应的库文件,下面我们就导入需要的库文件。
导入文件的时候需要两个脚本文件,可以在我的网盘地址下载
https://pan.baidu.com/s/1eUdDzqi
我们把两个脚本文件移动到同级目录下,如下图
好,然后利用cpldd.sh脚本文件,导入库文件。
在终端进入该目录,输入以下命令。
./cpldd.sh KyBotMonitor ~/workStation/TEST/cmake-build-debug
其中,第一个参数代表的是你的可执行文件的名称,第二个参数表示你要导入的目录。
之后会自动出现一串代码
Copying /usr/lib/nvidia-384/libnvidia-glcore.so.384.111 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /usr/lib/x86_64-linux-gnu/libX11.so.6 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /usr/lib/x86_64-linux-gnu/libXext.so.6 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /lib/x86_64-linux-gnu/libpcre.so.3 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /lib/x86_64-linux-gnu/libuuid.so.1 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /lib/x86_64-linux-gnu/libcrypt.so.1 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /lib/x86_64-linux-gnu/libexpat.so.1 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /usr/lib/x86_64-linux-gnu/libicudata.so.55 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /usr/lib/x86_64-linux-gnu/libxcb.so.1 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /usr/lib/x86_64-linux-gnu/libXau.so.6 to /home/ALEX/workStation/TEST/cmake-build-debug
Copying /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 to /home/ALEX/workStation/TEST/cmake-build-debug
Done!
这时候可以打开文件夹看看,里面多出了很多以lib开头的文件。
因为是利用QT开发的界面,也利用了很多QT的东西,所以要导入QT所需要的库。
将qt的plugins目录拷到可执行文件所在目录下。如下图:
注意:是要把整个plugins文件夹拷贝到cmake-build-debug文件夹下,本人第一次将plugins里面的东西直接拷贝进去导致没成功。。。
在导入了这些文件之后,移植到其他电脑上运行,发现还提示我缺少了QT5DBus的一系列文件和libQt5XcbQpa.so的一系列文件。这个我们直接去QT目录把缺少的文件都拷贝到cmake-build-debug文件夹下就可以了。
因为别人不可能是使用终端运行该程序,所以添加了一个运行的脚本,直接双击脚本就可以执行该程序了。网盘中的run.sh就是实现该功能,但是需要重命名,把run.sh修改成你的名称,我这里是叫”KyBotMonitor.sh”。
可能有些系统没有设置,双击sh文件的时候是以终端形式打开的。按下面来设置一下就可以了。
任意打开一个文件夹,选择左上角的 ”编辑——首选项“
首选项中切换到行为选项卡,把“可执行文本文件”中的选项“打开可执行文本文件时查看其内容”,改选为“打开可执行文本文件时运行它们”;
就可以了。
如果直接把刚才的cmake-build-debug文件夹改名字发给客户,客户就能看到很多东西,而且如果一不小心删除了的话会导致程序无法运行。所以就想着生成deb安装包,把程序安装到指定的位置,只给客户留出一个接口(桌面程序.desktop),客户直接双击就行了。
DEBIAN文件夹:是必须的,是制作deb文件的关键
usr文件夹:是按照你想把程序安装到哪个路径。我的路径是/usr/local/目录下,其中的KyBotMonitor文件夹就是第一步中生成的包含了所有库文件和脚本文件的文件夹。
/usr/share/aplications 目录下面有个KyBotMonitor.desktop文件,这个文件是用来最后生成桌面程序的。
DEBIAN文件夹下面的control内容如下:
Package:KyBotMonitor
Version:20180123
Section:utils
Priority:optional
Architecture:i386
Depends:
Installed-Size:4096
Maintainer:paul
Description:KyBotMonitor
KyBotMonitor.desktop文件内容如下:
[Desktop Entry]
Version=1.0
Name=KyBotMonitor
Exec=/usr/local/KyBotMonitor/KyBotMonitor.sh //这个sh就是刚才的run.sh改名而来
Icon=/usr/local/KyBotMonitor/KyBotMonitor.png //这个ICON也可以不设,自己下图放到指定目录下即可
Termina=false
Type=Application
Categories=Development
Name[en_US]=KyBotMonitor
至此,准备工作完成。
终端进入deb文件夹同级目录下,利用dpkg指令生成deb包。
dpkg -b deb KyBotMonitor.deb
之后就会看到同级目录下多一个KyBotMonitor.deb安装包了
移植到其他电脑上,可以直接双击安装,也可通过命令
dpkg -i KyBotMonitor.deb
之后在Ubuntu左上角搜索,就可以了打开了。