Linux appimage
1. linuxdeployqt 编译环境配置
vim ~/.bashrc
# add path, 根据安装路径替换 /opt/Qt5.14.2
export PATH=/opt/Qt5.14.2/5.14.2/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/opt/Qt5.14.2/5.14.2/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/opt/Qt5.14.2/5.14.2/gcc_64/plugins:$QT_PLUGIN_PAT
export QML2_IMPORT_PATH=/opt/Qt5.14.2/5.14.2/gcc_64/qml:$QML2_IMPORT_PATH
2. 打包环境配置
# linuxdeployqt
git clone git@github.com:probonopd/linuxdeployqt.git
cd linuxdeployqt
mkdir build && cd build
cmake .. && make -j
sudo cp tools/linuxdeployqt/linuxdeployqt /usr/local/bin
# patchelf
git clone git@github.com:NixOS/patchelf.git
cd patchelf
sudo apt install -y automake && ./bootstrap.sh
./configure
make
sudo make install
# appimagetool
sudo wget -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" -O /usr/local/bin/appimagetool
sudo chmod a+x /usr/local/bin/appimagetool
# update ld
sudo /sbin/ldconfig -v
3. desktop && icon
# Qt 编译项目 release 版本,打开编译生成的目标文件夹
# 假定编译的二进制可执行文件名称为 xxxxxx
mkdir appimage # 创建目录,目录名称自定
cd appimage && cp ../xxxxxx ./
touch xxxxxx.desktop
echo "[Desktop Entry]
> Type=Application
> Name=AppName
> Exec=AppRun %F
> Icon=icon.png
> Comment=Edit this default file
> Terminal=false
> Categories=Application;" > xxxxxx.desktop # Name 程序名称, Icon 图标名称
# 此时 appimage 应该有三个文件 xxxxxx.desktop, xxxxxx, icon.png.png
4. 打包 Qt 程序
# 若依赖自编译动态库,需要创建目录 lib,并将动态库放在此目录下
# 若构建过程提示缺少第三方 libxx.so, 按需安装即可,例如 libxx-dev
linuxdeployqt xxxxxx -unsupported-allow-new-glibc -appimage
Windows
1. 打包环境配置
- 打包工具:Engima Virtual Box
- Qt Build Release Version
- 复制 xxx.exe 文件到某新建文件夹下
- 运行 Qt x.xx.x (MinGW x.x.x 64-bit) 或者 Qt 5.14.2 (MSVC 2017 64-bit)
根据编译的版本选择 - 切换到 xxx.exe 目录下执行 windeployqt xxx.exe
- 打开 Engima Virtual Box 选择 xxx.exe 文件,然后点击 Add->Add Folder Recursive 选择文件夹,点击处理会在同目录下生成一个 xxx_boxed.exe
- 完成
- HTTPS 支持:安装对应版本号 OPENSSL
// 打印 openssl 版本号
qDebug() << QSslSocket::supportsSsl() << QSslSocket::sslLibraryBuildVersionString() << QSslSocket::sslLibraryVersionString();
- 安装 openssll
- 复制 libcrypto-1_1-x64.dll, libssl-1_1-x64.dll 到 xxx.exe 同目录下,重新打包
2. 运行问题
- 运行QT的应用程序.exe 提示找不到dll或(0xc000007b)的错误:
解决方法:把 Qt 安装目录下C:\Qt\Qt5.14.2\5.14.2 对应的编译版本的 bin 路径添加到系统环境变量即可
例如 C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin