Qt 提供了一个打包工具,叫做 deployqt,可以将应用程序所依赖的库文件都提取出来。在 Windows 系统叫 windeployqt,在 Linux 系统叫 linuxdeployqt,在 Mac 下叫 macdeployqt。
git clone https://github.com/probonopd/linuxdeployqt.git
本工程在172.25.130.130服务器chroot环境下,Qt环境是配好的,因此这里不需要配置Qt的环境变量。
sudo apt install patchelf
该工具的作用:patchelf是一个用于修改ELF(可执行和链接格式)二进制文件的工具。它可以更改二进制文件中的符号表、动态段、程序头等部分,以便在运行时重新定位或修改它们。这对于动态库加载、插件系统和其他需要自定义运行时行为的场景非常有用。
工程中使用如下:
linuxdeployqt/main.cpp 去掉glibc判断
进入工程目录下:
因为这是qt工程,我们可以qmake 生成makefile 文件 ,再make编译(网上有使用cmake教程,其实大可不必)
编译有报错:
可以把这些打印全注掉,make clean&& make。
编译完成,把这个可执行文件扔进/usr/local/bin目录,这样,我们就可以在其他目录访问了。
通过命令查看可执行程序的信息:
在需要打包的文件夹下执行 linuxdeployqt xxx(应用程序名)-bundle-non-qt-libs即可。
这里可以参考新人文档如何使用编译deb包。