龙空技术网

Linux学习笔记:在linux下用打包发布可执行文件的两种方法

飞翔的小s 665

前言:

如今我们对“linux怎样执行文件”大体比较关切,大家都想要分析一些“linux怎样执行文件”的相关资讯。那么小编同时在网上收集了一些对于“linux怎样执行文件””的相关资讯,希望各位老铁们能喜欢,你们一起来了解一下吧!

我们在linux下编写代码时,会用到一些额外的库(动态或者静态),如小编在qt下写opencv的程序,是在电脑上,项目需求,需要将其移植到嵌入式板子上。小编这里提供一种简单的方法,将我们在电脑上开发好的程序,可以打包复制到其他只要是Linux系统就可以运行,不需要再配置复杂的开发环境。

方法一:通过sh脚本

这里小编用qt下写的一个opencv程序示例:
1.利用qt生成可执行文件,使用release的方式编译出可执行文件,然后新建一个文件夹,将可执行文件拷贝进去备用。

小编这里生成的文件是这样的:

2.利用脚本文件
2.1新建文件
2.1.1pask.sh
2.1.2test2.sh

这个脚本文件名必须和要发布的程序名字相同,所以为 Server
新建文件后,文件夹包含内容如下:

2.2 添加脚本
向pack.sh文件里添加以下内容:

#!/bin/sh exe="test2" #你需要发布的程序名称des="/home/shang/test" #创建文件夹的位置deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }') cp $deplist $des

然后向test2.sh文件里添加以下内容(内容不需要更改):

#!/bin/sh appname=`basename $0 | sed s,\.sh$,,` dirname=`dirname $0` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; then dirname=$PWD/$dirname fi LD_LIBRARY_PATH=$dirname export LD_LIBRARY_PATH $dirname/$appname "$@"

执行脚本
终端进入文件夹目录,运行:

sh ./pack.sh

可执行文件依赖的链接库将会拷贝到所在的目录,如图:

打包发布
将上面整个文件夹,复制拷贝到其他linux系统,在文件夹路径内终端运行:

./test2.sh

方法二:利用linuxdeployqt将程序打包成应用

ps:这也是笔者更喜欢的方法,原因可看下图,整个程序包结构更加简洁和清晰:

1、下载linuxdeployqt

github网址:

2、把下载的文件放入 /usr/local/bin 内,并执行如下命令使其可以运行

chmod 777 linuxdeployqt-6-x86_64.AppImage

3、把qmake的路径添加到环境变量中

sudo gedit /etc/profile​在文件末尾添加:export PATH="/home/shang/Qt5.11.2/5.11.2/gcc_64/bin:$PATH"

具体的路径和qt版本需要自己查看

4、假如 receiver是QT release出来的可执行文件,执行如下语句可复制依赖的文件到当前目录

linuxdeployqt-6-x86_64.AppImage receiver -appimage

至此就可以通过双击apprun或者receiver均可拷贝到其它任意一台linux电脑运行程序啦。

标签: #linux怎样执行文件