c++ - 在构建 boost 时静态链接 openssl
问题描述
我已经静态构建了 boost,并且档案被链接到我的应用程序的共享库中。在该共享库中,我还链接了 openssl 1.1.1 档案。但是,在运行时,会产生以下堆栈跟踪:
Thread 1 (Thread 0x7fc80cc19700 (LWP 28492)):
#0 0x00007fc82d4e88c0 in TLSv1_2_enc_data () from /opt/tableau/tableau_server/packages/bin.20201.20.0326.1623/libtabssl.so.1.0.0
#1 0x00007fc82d2be41c in SSL_CTX_new () from /opt/tableau/tableau_server/packages/bin.20201.20.0326.1623/libtabssl.so.1.0.0
#2 0x00007fc7fc83effd in boost_sb::asio::ssl::context::context(boost_sb::asio::ssl::context_base::method) () from /home/employee/DrillDevelopment/NEW_DRill/lib/ThirdParty/./libdrillClient.so
#3 0x00007fc7fc830af1 in Drill::ChannelFactory::getChannelContext(Drill::channelType_t, Drill::DrillUserProperties*) () from /home/employee/DrillDevelopment/NEW_DRill/lib/ThirdParty/./libdrillClient.so
如您所见,boost asio 的 ssl 函数使用了另一个导致问题的较旧的 ssl 库。我想以某种方式使用链接中包含的我的 ssl 档案来构建提升。问题是因为 openssl 对于 asio 是可选的,所以我无法在构建时链接 openssl 库来提升它。
有什么想法吗?
EDIT1:这是一个示例链接命令:这是一个示例链接命令:
/usr/bin/g++49 -fPIC -fPIC -O3 -DNDEBUG -shared -Wl,-soname,libdrillClient.so -o libfoo.so -L/usr/local/lib /home/agupta/p4/AGupta_bansmbbld_3441/ThirdParty/boost/1.68.0_sb_icusb_58.2.x/_src/boost_sbdebug64/debug64/lib/libboost_sb_regex.a /home/agupta/p4/AGupta_bansmbbld_3441/ThirdParty/boost/1.68.0_sb_icusb_58.2.x/_src/boost_sbdebug64/debug64/lib/libboost_sb_system.a /home/agupta/p4/AGupta_bansmbbld_3441/ThirdParty/boost/1.68.0_sb_icusb_58.2.x/_src/boost_sbdebug64/debug64/lib/libboost_sb_date_time.a /home/agupta/p4/AGupta_bansmbbld_3441/ThirdParty/boost/1.68.0_sb_icusb_58.2.x/_src/boost_sbdebug64/debug64/lib/libboost_sb_chrono.a /home/agupta/p4/AGupta_bansmbbld_3441/ThirdParty/boost/1.68.0_sb_icusb_58.2.x/_src/boost_sbdebug64/debug64/lib/libboost_sb_thread.a /home/agupta/p4/AGupta_bansmbbld_3441/ThirdParty/boost/1.68.0_sb_icusb_58.2.x/_src/boost_sbdebug64/debug64/lib/libboost_sb_random.a /home/agupta/p4/AGupta_bansmbbld_3441/ThirdParty/openssl/1.1.1/centos5/gcc4_9/release64/lib/libssl.a /home/agupta/p4/AGupta_bansmbbld_3441/ThirdParty/openssl/1.1.1/centos5/gcc4_9/release64/lib/libcrypto.a
解决方案
推荐阅读
- .net - SQL Azure 查询性能与统计数据更好?
- node.js - 我无法将消息回复到 twilio 号码
- bash - elasticsearch docker entrypoint之类的脚本如何管理带有特殊字符的可变名称
- python - CNN图像到图像回归输出有非常高的损失99.3%
- javascript - 带有正则表达式的子字符串字边界
- visual-studio-code - 旧的调试会话阻止在 chrome 中使用 vs 代码进行调试
- php - 在 echo 中添加附加到 URL
- html - 当我在 w3c 验证器中运行下面的代码时,它返回此错误“结束标记 a 违反嵌套规则。”。问题可能出在哪里
- php - 在 Laravel 中 queue:work 和 config/queue.php 传递的参数之间的区别
- javascript - JavaScript scrollBy(x,y) 不适用于 Android WebView 中的样式列宽