我们在linux下编撰代码时,会用到一些额外的库(动态或则静态)linux运行bin文件,如小编在qt下写opencv的程序linux移植,是在笔记本上,项目需求,须要将其移植到嵌入式板子上。小编这儿提供一种简单的方式,将我们在笔记本上开发好的程序,可以打包复制到其他只要是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 "$@"
执行脚本
终端步入文件夹目录linux运行bin文件linux软件工程师,运行:
sh ./pack.sh
可执行文件依赖的链接库将会拷贝到所在的目录,如图:
打包发布
将里面整个文件夹,复制拷贝到其他linux系统,在文件夹路径内终端运行:
./test2.sh
技巧二:借助linuxdeployqt将程序打包成应用
ps:这也是笔者更喜欢的方式,诱因可看右图,整个程序包结构愈发简练和清晰:
1、下载linuxdeployqt
github网址:
https://github.com/probonopd/linuxdeployqt/releases
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是QTrelease下来的可执行文件,执行如下句子可复制依赖的文件到当前目录
linuxdeployqt-6-x86_64.AppImage receiver -appimage
至此就可以通过双击apprun或则receiver均可拷贝到其它任意一台linux笔记本运行程序啦。