Qt打包生成可执行程序

 一,为什么QT要打包和部署?
因为我们要把写好的程序发给用户来用,我们写好的源码也不是随便给别人的。

qt安装sudo apt-get install qtcreator

qt卸载  sudo apt-get remove qt5-default qtcreator
二,QT如何打包和部署?
1.我们把工厂切换到release模式,然后编译。
release模式:基本没有调试信息。
debug模式:有很多调试信息。
2.找到release模式构建的文件夹。
3.改一下图标。先把图标加到工程所在文件夹。然后在pro文件里面添加
RC_ICONS=serial_iocn.ico
  注意:图标的格式必须为.ico这个格式的,其他格式不行。
4.封包操作,需要用到QT的控制台,接下来,我们需要电脑桌面上创建一个新的文件夹,注意千万不要有中文路径。然后把exe文件拷贝到我们新创建的文件夹里面,如下:

在QT控制台里面。我们使用命令进到我们新创建的文件夹所在的路径,命令如下。

最后一步,我们使用windeployqt工具把库加到我们新创建的这个文件夹里面。如下:
格式:windeployqt exe文件的名称

 

三,QT5.14封装成可执行程序,运行qt的终端:

进入deploy.bat所在的路径,

然后把deploy.bat拖进去回车就可以

新建deploy.bat

rmdir  /S /Q  Deploy
mkdir Deploy
xcopy /E Release64\Windows\*     Deploy\
windeployqt --qmldir  qml    Deploy\yourTest.exe

四,QT5.8生成可执行程序

1,在Qt Creator下用release跑一遍程序,生成相应的EXE文件

2,在Qt Creator下编译好的release下的 youProgramName.exe 拷贝到一个文件夹下面;

3,打开Qt命令行,也就是Qt5.8 64-bit for desktop(MSVC 2015),然后进入你拷贝EXE文件的文件夹下; 如:cd /d D:\drinkWater,接着运行 windeployqt youProgramName.exe,然后文件夹下就会出现所有依赖。

五,zynq 使用2022.2移植QT的修改

build.sh

#!/bin/sh
source /home/zynq/petalinux/settings.sh
SDK_PATH=/tools/Xilinx/Vitis/2022.2
if [ ! -d $SDK_PATH ]; then
  echo "no dir ${SDK_PATH}"
  exit 1
fi
source ${SDK_PATH}/settings64.sh
export ZYNQ_QT_INSTALL=/opt/alinx/zynq_qt5.7.1 
#export PKG_CONFIG_LIBDIR=${SDK_PATH}/gnu/aarch32/lin/gcc-arm-linux-gnueabi/arm-linux-gnueabihf/lib
export PKG_CONFIG_LIBDIR=${SDK_PATH}/gnu/aarch32/lin/gcc-arm-linux-gnueabi/cortexa9t2hf-neon-xilinx-linux-gnueabi/lib
export CROSS_COMPILE=arm-linux-gnueabihf-

if [ ! -d $PKG_CONFIG_LIBDIR ]; then
  echo "no ${PKG_CONFIG_LIBDIR}"
  exit 1
fi

Cur_Dir=$(pwd)
QT_SORCE=qt-everywhere-opensource-src-5.7.1
echo $Cur_Dir
export ZYNQ_QT_BUILD=$Cur_Dir
export PATH=$ZYNQ_QT_INSTALL/bin:$PATH
cd $QT_SORCE
./configure -xplatform arm-linux-gnueabihf-g++ \
    -opensource \
    -confirm-license \
    -skip qtquickcontrols \
    -skip qtwebchannel \
    -skip qtactiveqt \
    -skip qtandroidextras \
    -skip qtdeclarative \
    -skip qtimageformats \
    -skip qtmacextras \
    -skip qtserialport \
    -skip qtx11extras \
    -skip qtxmlpatterns \
    -skip qtconnectivity \
    -skip qtdoc \
    -skip qtgraphicaleffects \
    -skip qtlocation \
    -skip qtmultimedia \
    -skip qtsensors \
    -skip qttools \
    -skip qttranslations \
    -skip qtwayland \
    -skip qtwebchannel \
    -skip qtwebengine \
    -skip qtwebsockets \
    -skip qtwinextras \
    -verbose \
    -no-gif \
    -no-libjpeg \
    -no-mtdev \
    -no-sql-db2 \
    -no-sql-ibase \
    -no-sql-mysql \
    -no-xcb \
    -qt-freetype \
    -fontconfig \
    -no-harfbuzz \
    -no-xinput2 \
    -no-xcb-xlib \
    -no-pulseaudio \
    -no-alsa \
    -no-cups \
    -no-iconv \
    -no-icu \
    -no-eglfs \
    -no-openssl \
    -no-dbus \
    -prefix $ZYNQ_QT_INSTALL
make -j4
sudo make install
sudo cp $Cur_Dir/qt_env_set.sh  $ZYNQ_QT_INSTALL/qt_env_set.sh

make_image.sh

#!/bin/sh
export ZYNQ_QT_INSTALL=/opt/alinx/zynq_qt5.7.1 
#export PKG_CONFIG_LIBDIR=/opt/Xilinx/SDK/2017.4/gnu/aarch32/lin/gcc-arm-linux-gnueabi/arm-linux-gnueabihf/lib
export PKG_CONFIG_LIBDIR=/tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/cortexa9t2hf-neon-xilinx-linux-gnueabi/lib
if [ ! -d $ZYNQ_QT_INSTALL ]; then
  echo "no ${ZYNQ_QT_INSTALL}"
  exit 1
fi
if [ ! -d $PKG_CONFIG_LIBDIR ]; then
  echo "no ${PKG_CONFIG_LIBDIR}"
  exit 1
fi
Cur_Dir=$(pwd)
LIBS_NAME=zynq_qt_lib
mkdir $LIBS_NAME
sudo cp $ZYNQ_QT_INSTALL/lib/*.so* $Cur_Dir/$LIBS_NAME
sudo cp -R $ZYNQ_QT_INSTALL/plugins $Cur_Dir/$LIBS_NAME

sudo cp $PKG_CONFIG_LIBDIR/libstdc++.so* $Cur_Dir/$LIBS_NAME
sudo cp $PKG_CONFIG_LIBDIR/* $Cur_Dir/$LIBS_NAME

cp -R fonts $Cur_Dir/$LIBS_NAME
cp $Cur_Dir/qt_env_set.sh $Cur_Dir/$LIBS_NAME
sudo chmod 777 $Cur_Dir/$LIBS_NAME -R
sudo dd if=/dev/zero of=qt_lib.img bs=1M count=400
sudo mkfs.ext4 -F qt_lib.img
sudo chmod go+w qt_lib.img
sudo mount qt_lib.img -o loop /mnt
sudo cp -rf $Cur_Dir/$LIBS_NAME/* /mnt
sudo chmod go-w qt_lib.img
sudo umount /mnt

源自于编译启动文件时候产生的

把下面这些复制过去,因为缺少这些库

修改前

复制进去以后 sudo cp $PKG_CONFIG_LIBDIR/* $Cur_Dir/$LIBS_NAME

### 打包 Qt 生成可执行程序的步骤 在使用 Qt 开发应用程序时,最终目标之一是将程序打包为一个独立的可执行文件,以便在没有安装 Qt 开发环境的计算机上运行。为了实现这一目标,需要按照一定的流程进行操作,确保程序能够正常运行并具有良好的用户体验。 #### 编译模式的选择 在进行打包之前,需要将项目切换到 **Release 模式** 进行编译。与 Debug 模式相比,Release 模式生成的程序体积更小,并且不包含调试信息,适合最终部署。通常,Qt 项目生成的 Release 文件夹会位于构建目录下的 `release` 子文件夹中,例如 `build-Serial-Desktop_Qt_5_12_9_MinGW_64_bit-Release\release` [^4]。 #### 准备可执行文件 找到 Release 模式下生成的 `.exe` 文件后,将其复制到一个新的空文件夹中。需要注意的是,该文件夹的路径不能包含中文字符,否则可能导致部署失败。例如,可以在 E 盘创建一个名为 `QTtest` 的文件夹,并将 `.exe` 文件复制进去 [^4]。 #### 使用 `windeployqt` 工具添加依赖库 为了确保程序能够在目标系统上运行,需要使用 Qt 提供的 `windeployqt` 工具来自动收集程序所需的依赖库。打开 Qt 的命令行工具(如 Qt 5.14.2 的 MSVC 64-bit 工具),进入包含 `.exe` 文件的文件夹,并执行以下命令: ```bash windeployqt ceshi.exe ``` 执行完成后,该文件夹中将自动生成程序所需的依赖库文件。此时,双击 `.exe` 文件即可运行程序 [^3]。 #### 添加数据库支持(如 MySQL) 如果程序依赖 MySQL 数据库,则还需要手动添加相关的数据库驱动文件。可以下载 `libmysql.dll` 并将其放置在与 `.exe` 文件相同的目录下。如果程序仍然无法运行,可以尝试将备用文件中的 `qsqlmysql.dll` 和 `qsqlmysqld.dll` 复制到程序目录下的 `sqldrivers` 文件夹中,并替换原有文件 [^3]。 #### 设置程序图标 为了提升程序的视觉效果,可以为 `.exe` 文件设置图标。首先,将图标文件(格式必须为 `.ico`)添加到项目文件夹中,然后在 `.pro` 文件中添加以下语句: ```qmake RC_ICONS = serial_iocn.ico ``` 重新编译项目后,生成的 `.exe` 文件将会显示指定的图标 [^2]。 #### 注意事项 - 确保路径中没有中文字符,避免部署失败。 - 根据编译器版本选择对应的 Qt 工具链,例如 MSVC 2017 64-bit 或 MinGW 64-bit。 - 确保目标系统上安装了相应的运行库(如 Visual C++ Redistributable)。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒听雪落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值