公司动态
linux中openssl版本不兼容问题
现象rootming:# ./app/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.25 not found(required by libcrypto.so.1.1)# 查看libcrypto.so.1.1 依赖的 GLIBCrootming:# objdump -T libcrypto.so.1.1 | grep GLIBC_# 或rootming:# strings libcrypto.so.1.1 | grep GLIBC_GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.4 GLIBC_2.3 GLIBC_2.25 GLIBC_2.3.2 GLIBC_2.7 GLIBC_2.3.4 GLIBC_2.17 GLIBC_2.16# 当前系统 libcrootming:~# ldd --versionldd(Ubuntu GLIBC2.23-0ubuntu11.3)2.23Copyright(C)2016Free Software Foundation, Inc. This isfreesoftware;see thesourceforcopying conditions. There is NO warranty;not evenforMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper.# libcrypto.so.1.1 调用了 getentropy()# 当前 GLIBC 没有rootming:# objdump -T libcrypto.so.1.1 | grep GLIBC_2.250000000000000000 w DF *UND* 0000000000000000 GLIBC_2.25 getentropy编译出libcrypto.so.1.1更改更换 glibc 风险很大,所以在当前机器编译出动态库如果动态库名称不一致则在应用同目录, 创建一个软连接wgethttps://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gztarxf openssl-1.1.1w.tar.gzcdopenssl-1.1.1w ./config sharedmake-j$(nproc)# 复制到app 同目录cplibcrypto.so.1.1..cplibssl.so.1.1..startApp.h启动app时,把app当前目录加入LD_LIBRARY_PATHexport LD_LIBRARY_PATH./ ./app