最近遇到一个奇怪的bug,记录一下

客户使用qt5.12.2编译客户的程序,一切正常。使用我提供的qt5.13.2的编译报错。报错如下,显示报错的原因看上去是代码类的写的有问题。

在这里插入图片描述

自己写了个QSslConfiguration的demo,在一台x86的Ubuntu20安装了qt5.13,发现是可以编译OK的。在ARM上就编译不过,而且报错也是 variable 'QSslConfiguration conf' has initializer but incomplete type

demo地址
https://download.csdn.net/download/linbounconstraint/87554547?spm=1001.2014.3001.5501

在这里插入图片描述

Qt官方的sslechoserver例子,编译的话,也是QSslConfiguration 报错。所以初步感觉可能不是代码的问题,是ARM版本的qt,编译的有问题。QSslConfiguration是Network下的类,感觉像是openssl导致的。

后来发现的确是,在编译Network项,没打开openssl。
按如下步骤,重新编译。

root用户执行
1.
apt-get install libssl-dev
2.在qt-everywhere-src-5.13.2目录下
./configure -prefix /usr/local/qt-5.13.2 -release  -confirm-license  -opensource -nomake examples -nomake tests -recheck-all
3.
make -j 8
4.
make install

打开了Qt Network -> OpenSSL选项,然后重新编译qt即可。

Qt Network:
  getifaddrs() ........................... yes
  IPv6 ifname ............................ yes
  libproxy ............................... no
  Linux AF_NETLINK ....................... yes
  OpenSSL ................................ yes
    Qt directly linked to OpenSSL ........ no
  OpenSSL 1.1 ............................ yes
  DTLS ................................... yes
  OCSP-stapling .......................... yes
  SCTP ................................... no
  Use system proxies ..................... yes


编译demo,和官方的sslechoserver,就一切正常了。
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐