报错信息
原因
openssl库版本冲突导致:程序自身使用了openssl 1.0.2r版本,之后使用第三方提供的库,该库内部包含了openssl的1.1.0版本(这一点第三方服务提供商并未主动告知),导致可以通过编译,一运行就会出错。
现象
为了定位问题原因,逐步排查,最后发现只要makefile中使用了该第三方库(如:LIBS += -lxxx)且代码中未调用该库任何接口,编译好的程序运行就会崩溃。
解决方法
将程序本身使用的openssl库升级到1.1.0f版本:https://www.openssl.org/source/old/1.1.0/openssl-1.1.0f.tar.gz
我用openssl是为了和libcurl联合编译使其支持https,在openssl使用高版本后,libcurl也需要升级到高版本(从7.56.1到7.58.0),否则可能编译不成功。