有没有办法用静态OpenSSL构建静态Qt?

 殇猿 发布于 2023-02-07 14:41

原始问题略有不同,但是一个更重要的问题的一部分.

我试图在Windows上使用静态OpenSSL将Qt 5.2构建为静态.

我的最终目标是发送一个二进制文件而无需提供libeay32.dll和ssleay32.dll.但是,在我看来,这是不可能的.我使用静态openssl库构建了静态Qt,但似乎Qt完全忽略了提供的lib并且总是搜索DLL.

这个答案还表明QtNetwork总是搜索DLL并忽略其他所有内容,但它也声明"两个选项是将OpenSSL编译成Qt ......"但似乎并非如此.

有人能提供明确的答案吗?

这是我的Qt配置(为了便于阅读而增加了换行符):

configure -static -qmake -opensource -nomake examples -opengl desktop
-platform win32-msvc2010 -openssl -I C:\git\openssl\build\include
-L C:\git\openssl\build\lib OPENSSL_LIBS="-llibeay32 -lssleay32 -lgdi32"

lpapp.. 13

有没有办法用静态OpenSSL构建静态Qt?

当然,在配置Qt时需要使用以下选项:

-openssl-linked

原因是QtNetwork QLibrary默认使用该类来动态打开库以获取必要的符号.

这是告诉Qt不要这样做的选项,并尊重正常的链接规则.

话虽如此,如果最终用户无需您的参与即可获得安全更新,建议不要对openssl使用静态链接.考虑一下,如果你走了会发生什么,不再在这个项目上工作,等等.

此外,此设置未经常测试,因此您实际上可能会遇到一些应在上游修复的问题,但这是针对相关用例的解决方案设计.

免责声明:由于SO是关于编程的,我忽略了Qt静态链接的许可后果,所以我想快速提醒你,要注意正确使用不要陷入法律麻烦.

1 个回答
  • 有没有办法用静态OpenSSL构建静态Qt?

    当然,在配置Qt时需要使用以下选项:

    -openssl-linked
    

    原因是QtNetwork QLibrary默认使用该类来动态打开库以获取必要的符号.

    这是告诉Qt不要这样做的选项,并尊重正常的链接规则.

    话虽如此,如果最终用户无需您的参与即可获得安全更新,建议不要对openssl使用静态链接.考虑一下,如果你走了会发生什么,不再在这个项目上工作,等等.

    此外,此设置未经常测试,因此您实际上可能会遇到一些应在上游修复的问题,但这是针对相关用例的解决方案设计.

    免责声明:由于SO是关于编程的,我忽略了Qt静态链接的许可后果,所以我想快速提醒你,要注意正确使用不要陷入法律麻烦.

    2023-02-07 14:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有