使用 openssl 链接编译 Qt5 时出错

2023-11-21

我的头很快就会爆炸...我想用 -openssl-linked 编译 qt,以便 openssl 库链接到 qt 库中。我已经尝试了很多选项,编译时的输出始终是:

ssl/qsslcertificate_openssl.cpp: In function ‘uint qHash(const QSslCertificate&, uint)’:
ssl/qsslcertificate_openssl.cpp:63:30: error: invalid use of incomplete type ‘X509 {aka struct x509_st}’
     return qHashBits(x509->sha1_hash, SHA_DIGEST_LENGTH, seed);
                          ^
In file included from /usr/local/include/openssl/crypto.h:131:0,
             from /usr/local/include/openssl/comp.h:59,
             from /usr/local/include/openssl/ssl.h:148,
             from ../../include/QtNetwork/5.5.1/QtNetwork/private/../../../../../src/network/ssl/qsslcontext_openssl_p.h:53,
             from ../../include/QtNetwork/5.5.1/QtNetwork/private/qsslcontext_openssl_p.h:1,
             from ssl/qsslsocket_p.h:55,
             from ssl/qsslsocket_openssl_p.h:63,
             from ssl/qsslsocket_openssl_symbols_p.h:64,
             from ssl/qsslcertificate_openssl.cpp:35:
/usr/local/include/openssl/ossl_typ.h:160:16: note: forward declaration of ‘X509 {aka struct x509_st}’
 typedef struct x509_st X509;

我编译了 openssl 并尝试编译 qt 并传递我编译的库:

OPENSSL_LIBS='-L/opt/openssl_build/lib -lssl -lcrypto' ./configure -prefix /opt/qt5.5.1_linux_staticssl -opensource -confirm-license -release -nomake examples -nomake tests -static -openssl -no-opengl -no-libpng -no-pulseaudio -no-linuxfb -no-gif -no-gstreamer -no-gtkstyle -no-directfb -no-gui -no-eglfs -no-glib -I /opt/openssl_build/include/openssl -L /opt/openssl_build/lib -no-xcb

我知道错误似乎是加载旧的 openssl 库,但我已经尝试更改该路径,以便它找不到它们并强制它加载新的库。 我不知道还能做什么。 Qt版本是5.5.1 openssl 1.0.1和g++ 5.2。


我必须使用 openssl 版本 1.0.1 构建 Qt,不知道它是否适用于 1.0.2。我必须更改系统 openssl 库的路径,以便 Qt 被迫使用我制作的库。 编译在源目录中运行的 openssl 的行:

./config --prefix=/opt/openssl_build_stable -shared
make
make test
sudo make install

我的 Qt 配置行:

OPENSSL_LIBS='-L/opt/openssl_build_stable/lib -lssl -lcrypto' ./configure -prefix /opt/qt5.5.1_linux_staticssl -opensource -confirm-license -release -nomake examples -nomake tests -static -openssl-linked -I /opt/openssl_build_stable/include/openssl -L /opt/openssl_build_stable/lib

感谢西蒙·瓦塔

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 openssl 链接编译 Qt5 时出错 的相关文章

随机推荐

  • 使用 Castle Windsor WcfFacility 创建客户端端点

    我创建了三个程序集 一个网站 一个 WCF 服务和一个包含服务实现的接口的契约程序集 我想使用 Castle Windsor 在客户端 网站 上为我创建服务 这样我就不必在网站的 web config 中为我希望使用的每个服务提供端点 我想
  • 如何从二进制文件生成 pdf 文件?

    如何从 php5 数据库中检索的二进制文件生成 pdf 文件 它是 Base64 编码的 我刚刚解码了它 但不知道下一步该怎么做 二进制数据很简单实际文件 或者更确切地说该文件的重要内容 只是没有文件名 base64 some base64
  • iOS 中背景图像无法正确显示

    我在网站上使用可平铺的背景图像 该网站在所有桌面浏览器中的浏览效果都很好 但当我在 iPad Mini 运行 iOS 6 1 3 上查看该网站时 背景图像中有条纹 您可以在大多数页面上看到一种模式 即一条看起来不错的线 背景图像的大小 然后
  • 数据集中 2 点之间的最大距离并识别这些点

    我有一个由几个点的 x y z 坐标组成的矩阵 我想找到极值点 即相距最远的两个点 我可以在 matlab 中找到一种方法 但我需要在 Python 中使用它 这是matlab中的代码 A randint 500 3 5 5 D pdist
  • 使用 imaplib 删除 Gmail 中的电子邮件时出现问题

    我尝试从收件箱文件夹中删除邮件 一切正常 但是当我切换到 所有邮件 文件夹时 删除不起作用 expunge 方法返回 OK None 并且消息未被删除 gt gt gt import imaplib gt gt gt server imap
  • MySQL - 如何在邮政编码前面加上“0”?

    在我的 MySQL InnoDB 数据库中 我有想要清理的脏邮政编码数据 干净的邮政编码数据是指我拥有邮政编码的所有 5 位数字 例如 90210 但由于某种原因 我在数据库中注意到 对于以 0 开头的邮政编码 0 已被删除 So 纽约州霍
  • 如何从谷歌日历获取活动详细信息

    当日历中创建新事件时 我成功地将谷歌日历的推送通知发送到我的系统中 推送通知的 POST 正文中没有数据 POST 标头如下 Host gt xxxxxx xxxx com Content Type gt application json
  • 实现 ICloneable 时是否应该提供深度克隆?

    我不清楚MSDN 文档在实现 ICloneable 时我是否应该提供深克隆或浅克隆 首选方案是什么 简短回答 是的 长答案 不要使用 ICloneable 这是因为 Clone 没有定义为浅克隆或深克隆 您应该实现自己的 IClone 接口
  • 两个指针指向同一个地址[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 当两个指针指向同一个地址时会发生什么 这会导致安全问题吗 事实本身没问题 但是如果你调用
  • 尝试在空对象引用上调用虚拟方法“void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)”

    我正在尝试使用 Android 材料设计来实现滑动选项卡布局 但它给了我NullPointerException 到目前为止 这是我的代码 MainActivity java public class MainActivity extend
  • 在 Matlab 中强制用户输入整数的最佳方法

    我正在 Matlab 中编写一个简单的程序 并且想知道确保用户输入的值是正确整数的最佳方法 我目前正在使用这个 while num dice lt 1 isempty num dice num dice input Enter the nu
  • 如何使用 Keras TensorBoard 回调进行网格搜索

    I m using the Keras TensorBoard callback I would like to run a grid search and visualize the results of each single mode
  • Facebook 连接、电子邮件地址?

    当您添加 facebook connect 以允许 facebook 用户登录您的网站时 您可以撤销用户名和电子邮件地址吗 是的 您需要首先提示他们提供数据权限 电子邮件 Facebook 也在很快改变你访问私人数据的方式 天哪 他们每天都
  • 如何获取 Spark 数据框以将其解释计划打印为字符串

    我有一个系统 其中组件A将sql传递给组件B 然后B通过apache Spark运行sql 并返回结果 出于调试目的 我放置了第二个通信通道 A 可以将 sql 传递给 B 并请求和解释计划 B 中的代码如下所示 def handleExp
  • 使用Python识别监听端口

    在从 bash 翻译一些脚本时 我遇到了许多使用 netstat an 来查找我们的服务之一是否正在侦听的情况 虽然我知道我可以只使用 subprocess call 或其他甚至 popen 我宁愿使用 pythonic 解决方案 所以我没
  • 对于登录 GET 还是 POST? [复制]

    这个问题在这里已经有答案了 我想知道我使用哪种 HTTP 方法来开发登录 API GET 还是 POST 我已经使用 post 方法在 PHP 中开发了登录 API 但是我的老板说 为什么你使用 POST 方法而不是 GET 方法 Alwa
  • 跨线程操作无效:从创建它的线程以外的线程访问控制“label1”[重复]

    这个问题在这里已经有答案了 可能的重复 为什么我会收到此错误 跨线程操作无效 控制 lbFolders 从创建它的线程以外的线程访问 我是 winforms 的新手 在我的代码中 我正在使用 for 循环更新进度条 现在我需要更新循环计数表
  • 在方法(Java 中)中改变对象参数是一种不好的做法吗?

    我有一个关于改变方法中的方法参数 它们是对象 的问题 我多次阅读和听到 在作为参数传入的方法中改变对象是一种不好的做法 例如 public void modifyList List list list add new Object 相反 应
  • jQuery 单击文档事件但忽略 div

    我正在使用 jQuery 制作在线幻灯片 我使用 document click 事件来检测用户何时单击页面 以了解何时显示幻灯片中的下一个项目符号点或移至下一页 我遇到的问题是我的工作让我在页面底部插入一个评论框 当有人单击评论框或保存评论
  • 使用 openssl 链接编译 Qt5 时出错

    我的头很快就会爆炸 我想用 openssl linked 编译 qt 以便 openssl 库链接到 qt 库中 我已经尝试了很多选项 编译时的输出始终是 ssl qsslcertificate openssl cpp In functio