13397158231   jevian_ma@worldflying.cn

Qt5.6.3在linux下静态编译的方法

2021-12-31 22:43:16

之前小沃写了一篇在windows下实现静态编译Qt5.6.3的文章,由于受到国家号召,小沃所在公司正在慢慢转变使用操作系统为deepin,因此最近也研究了下如何在deepin v20下实现静态编译的方法。下面与大家分享一下:

一、首先,对Linxu下UI程序新的理解

        由于Linux的发行版特别多,而且很多发行版的图形显示库不提供静态编译库,因此无法做到一个可执行文件支持所有的发行版,并且也无法做到真正的静态编译。因此我们只能做到对Qt库的静态编译,发行版需要安装与Qt库相对应的glibc,libxcb等文件。

二、安装编译需要的依赖文件

目前发现编译需要下面4个依赖:

apt-get install pkg-config build-essential libx11-dev python -y

pkg-config是用于返回库函数的调用路径的,用于编译时减少不必要的问题,也可以帮助可执行文件预先寻找所需要的依赖实际路径。

build-essential是用于安装gcc,make,glibc等文件的,是开发linux的常用组件。

libx11-dev是x11,UI显示环境的开发库,提供开发图形化工具的库与函数,比如编译Qt Linux版本需要添加的-xcb。

libfontconfig-dev是用于提供编译好的程序所需要的中文支持的。

上面4个库经过测试,都可以在编译完成后删除。无需保留。

三、裁剪

    将5.6.3\Src中,除了文件夹qtbase的其他文件夹全部删掉(只删除文件夹)或是保留几个需要使用的,比如qtserialport,我们只编译核心功能。可以根据实际需求保留特定的文件夹。

    小沃运行的是如下完整命令如下:

./configure -prefix /opt/Qt/Qt5.6.3/5.6.3/staticlib -release -opensource -confirm-license -static -force-pkg-config -qt-xcb -qt-xkbcommon-x11 -xkb-config-root /usr/share/X11/xkb -no-glib -no-icu -qt-zlib -qt-libpng -qt-libjpeg -qt-pcre -qt-freetype -no-largefile -no-qml-debug -no-openssl -no-opengl -nomake examples -nomake tests

(1)需要根据自己Qt的实际安装路径修改/opt/Qt/Qt5.6.3/5.6.3/staticlib

(2)-qt-xcb必须添加,否则运行程序会提示找不到xcb插件。

(3)-no-glib -no-icu -qt-zlib -qt-libpng -qt-pcre -qt-freetype是为了减少对动态链接库的依赖,提高跨平台的程序兼容性。

(4)-no-largefile不编译大文件支持,-no-qml-debug不编译qml的debug功能,-no-openssl不编译ssl支持,均是为了减小程序体积的。

(5)这个命令只添加了最基础的Qt支持,以下是可选修改

-opengl desktop 替换-no-opengl让其支持opengl库

四、编译

  make -j 8

8为cpu核心数,这个数字最好是与cpu核心数一致,可充分利用多核特性。

五、安装

  make install

六、使用

    以后使用需要将/opt/Qt/Qt5.6.3/5.6.3/staticlib/bin添加到环境变量中去,然后通过qtcreate开发完毕程序后,整个程序的工程通过命令行运行如下命令即可。

    qmake

    make

    最后就会在工程文件下的release下看见编译出的东西了。

    注:网上有的说需要先运行qmake -project,这是为了生成qt工程文件。其实如果前期你是通过qtcreate开发的,那么qtcreate已经帮你把工程文件生成好了,这步是可以跳过的。


最后注意一点,本方法编译文件是依赖了Qt源代码的,所以通过本方法生成的文件是需要遵从LGPL协议而向使用者开放源代码的。


文章作者:沃航科技

优秀产品推荐:可编程网络IO控制器

上一篇:Jave Log4j漏洞肆虐,沃航科技不受影响

下一篇:Linux搭建rt-thread编译环境的配置流程

联系我们

  • 地址:武汉市东湖高新开发区光谷总部国际1栋2412室
  • QQ:932773931
  • 电话:027-59761089-806
  • 手机:13397158231
  • 邮箱:jevian_ma@worldflying.cn

关注公众号

扫码添加微信

沃航(武汉)科技有限公司版权所有

备案号:鄂ICP备16014230号-1

本网站由提供CDN加速/云存储服务