Linux Ubuntu系统发布Qt程序:
1.先将工程使用Release模式编译,得到可执行二进制文件(应用程序)
假设项目名:untitled(项目名根据自己应用程序名而定)
2.新建目录QtTest
3.在目录QtTest 下建立ldd_copy.sh脚本和 untitled.sh 脚本 (与工程名一致)
ldd_copy.sh
#!/bin/sh
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
untitled.sh
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
# set font path
#QT_QPA_FONTDIR=$dirname/fonts
#export QT_QPA_FONTDIR
# set library path
LD_LIBRARY_PATH=$LD_LIBRATY_PATH:$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
使用任意文本编辑器就可以新建脚本
- 修改 ldd_copy.sh 和 untitled.sh脚本权限
cd /home/linasi/QtTest #进入QtTest目录
sudo chmod 777 ldd_copy.sh
sudo chmod 777 untitled.sh
二、提取依赖包
将ldd_copy.sh脚本复制到程序编译输出文件夹中;
如build-untitled-Desktop_Qt_5_15_2_GCC_64bit-Release
cd命令进入build-untitled-Desktop_Qt_5_15_2_GCC_64bit-Release目录
cd /home/linasi/build-untitled-Desktop_Qt_5_15_2_GCC_64bit-Release
运行命令以下命令(会在该文件夹中生成一个lib文件夹)
sudo ./ldd_copy.sh untitled
如果报错运行下面的命令
sudo bash ./ldd_copy.sh untitled
将lib里所有的文件和运行程序build-untitled-Desktop_Qt_5_15_2_GCC_64bit-Release/untitled复制到自己新建目录QtTest中(不要复制文件夹,直接把文件夹下的东西复制进去),然后将lib文件夹删除
如需root权限删除,在终端中直接输入sudo nautilus 命令,以管理员权限打开文件夹
找到要删除的文件或文件夹,执行删除操作,操作完关掉使用此命令打开的文件夹,释放终端
sudo nautilus
进入QT的安装目录,进入platforms文件夹中
我的是/home/linasi/Qt/5.15.2/gcc_64/plugins/platforms, 将 ldd_copy.sh拷贝到此目录下
运行以下命令(会在该文件夹中生成一个lib文件夹)
sudo ./ldd_copy.sh libqxcb.so
如果报错运行以下命令
sudo bash ./ldd_copy.sh libqxcb.so
将lib里所有的文件复制到目录QtTest中,复制中有相同文件可以替换;
删除该文件夹中的lib 和 ldd_copy.sh;()
将整个platforms文件夹复制目录QtTest中, 这时复制的是整个文件夹,这使得目录QtTest中会多出一个platforms文件夹;
将/home/linasi/Qt/5.15.2/gcc_64/plugins目录下imageformats、platforminputcontexts文件夹复制到目录QtTest中,其中imageformats目录下是支持不同格式图片的库文件,platforminputcontexts目录下是支持中文输入的库文件;
将上述新建的QtTest文件夹拷贝到其他未安装QT的相同linux系统下,直接运行目录中 untitled.sh 脚本即可启动程序.
#输入以下命令
./untitled.sh # ./表示当前目录,先 cd 命令切换到untitled.sh所在目录。
设置双击启动应用程序,添加图标
在Ubuntu中,找不到程序图标,只能.sh启动的解决方法
桌面图标在/usr/share/applications中,在该文件夹下打开终端
输入以下命令创建图标
#untitled为应用程序名字
sudo gedit untitled.desktop
在打开的.desktop中填入以下内容
[Desktop Entry]
Version=4.0
Type=Application
Name= test
Comment=Idea Studio
Exec=/home/linasi/QtTest/untitled.sh %F
Icon=/home/linasi/QtTest/untitled.png
Terminal=false
StartupNotify=true
Categories=Application
右键untitled.desktop,复制到桌面
右键桌面untitled.desktop,允许启动
双击test启动程序,效果如下
发布Qt服务器控制台程序
#打包步骤和前面一样
#用WinSCP将文件夹上传到服务器后
#在PuTTY终端修改文件权限
#命令如下
chmod 777 fuwuqiApp
chmod 777 fuwuqiApp.sh
#启动程序
./fuwuqiApp.sh