我有一个应用程序(imsd服务器),它可以动态加载我正在维护的插件,即作为共享库发布的插件。
整个程序在Centos7.3.1611上运行
问题显然是,该应用程序与旧版本的openssl(据说是1.0.1k,我正在等待确认)静态链接,插件至少需要1.1。
我尝试了针对libssl和libcrypto静态和动态链接插件,但当它被执行时,它发现应用程序和segfault已经加载了符号(即OPENSSL_LH_insert),因为函数在1.0和1.1之间的行为不同。
恐怕没有解决方案,因为整个事情一团糟,不幸的是,主应用程序和系统配置都不在我的控制之下。
尽管也许Linux链接有一些我不知道或不理解的地方,但有一种方法可以神奇地解决它。
非常感谢。
我尝试将插件链接到libssl.a和libcrypto.a,或者使用-l:libcrypto指定我想要的动态版本。1.1.1-l:libssl:1.1.1
在这两种情况下,它在ssl_all_ciphers_int阶段仍然崩溃。
我也尝试过完全不链接libssl,但在这种情况下,它不会加载,因为它缺少旧版本ssl中不存在的符号。
我可以尝试修改插件以使用旧的libssl,但这将是一个真正的痛苦,我不确定它是否有效。