说明:本文是参考原文https://blog.csdn.net/weixin_43219970/article/details/87269166
然后根据原文的方式进行了验证和修改,并最终实现了打包程序。
1.qt创先project ,取名为test,程序编辑完后先将工程使用Release模式编译
2.桌面上创建demo文件夹,打开qt编译输出文件的Release文件夹中test复制到demo文件中。
3.在demo文件夹中新建一个脚本文件 install.sh,通过指令chmod 777 install.sh修改权限
4.向install.sh中写入以下的内容,(内容不需要修改)
#!/bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done
5、运行./install.sh test,可能会报:No such file or directory 不用管它,运行完上述的指令后,同目录下会生成lib文件夹,里面会有很多文件。
6、将上一步lib文件夹下的文件全部复制到demo文件夹中。
7、.进入QT的安装目录(可以用用查看命令:whereis qtcreator ),找到platforms文件夹,如:/usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms,
将整个platforms文件夹复制到demo文件夹中,如下命令:
cp -r /usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms /home/pi/Desktop/demo
8.将上文的install.sh文件放到platfroms/中,运行./install.sh libqxcb.so,这时会新生成一个lib文件夹——libqxcb.so的库文件夹
9.将libqxcb.so的库文件夹中的所有文件复制到demo文件夹中,替换所有,然后删除platfroms/lib文件夹
10.在demo文件夹中新建脚本文件test(程序的名称).sh,执行chmod 777 test.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 "$@"
11、将图标等其他资源文件(文件或文件夹)复制到demo文件夹中,就制作完成了一个文件安装包
12、在demo下新建test.desktop文件,并写入以下内容
[Desktop Entry]
Type=Application
Name=test
Exec=/home/pi/Desktop/demo/test.sh //可执行文件的路径
Icon=/home/pi/Desktop/demo/app.ico //快捷方式的图标文件路径
Terminal=false
Encoding=UTF-8
Version=1.0``
13、在demo下新建setup脚本文件用于安装,并写入以下内容
#!/bin/bash
#start pi spi
pwds=/boot/config.txt
sudo sed -i 's/dtparam=spi=off//g' $pwds
sudo sed -i 's/dtparam=spi=on//g' $pwds
sudo sed -i '$a dtparam=spi=on' $pwds
#reboot后生效
CurDir=$PWD"/test.desktop"
ExecDir=$PWD"/test.sh"
IconDir=$PWD"/app.ico"
sudo sed -i "4c Exec=$ExecDir" $CurDir
sudo sed -i "5c Icon=$IconDir" $CurDir
sudo cp $CurDir /usr/share/applications/test.desktop
cp $CurDir /home/pi/Desktop/test.desktop
14、设置权限:chmod 777 setup 然后运行./setup安装程序并生成桌面快捷方式```
注意:文中的test为工程中生存的可执行文件名,根据自己实际情况替换。
若运行时提示.so文件找不到,可以修改/etc/ld.so.conf文件,在其尾部添加so文件所在文件夹路径,
或者将so文件放到/usr/local/lib下。
然后执行ldconfig重新加载。
原文链接:https://blog.csdn.net/weixin_43219970/article/details/87269166