gmssl编译linux,linux 编译安装GmSSL记录

1,在GMSSL官网下载源码包。

2,参考官网编译安装流程:http://gmssl.org/docs/quickstart.html

进行编译安装。

3,安装完毕后运行gmssl version出错如下:

gmssl:relocation error: gmssl: symbol BIO_debug_callback version OPENSSL_1_1_0d not defined in file libcrypto.so.1.1 with link time reference

网上查到的方案:

https://www.cnblogs.com/wangzihong0213/p/10856875.html

使用ldd查看gmssl使用的动态链接库位置,发现会使用linux-gun下存在的库,并没有链接编译源码生成的动态链接库。进行简单的拷贝可能导致无法预测的其他错误。

故思考后的解决方案:

思路:修改gmssl运行时使用的动态链接库为自身编译生成的库文件。

需要解决问题:1,如何修改动态链接库的链接路径,参见:https://blog.csdn.net/wh8_2011/article/details/79519293

得知编译源码时可以指定软件优先进行搜索的路径。即编译源码时使用参数:-Wl,rpath=选项

。故对Makefile做如下修改:(粗体字部分为我做的修改)

LIBRPATH=$(INSTALLTOP)/$(LIBDIR)

MANDIR=$(INSTALLTOP)/share/man

DOCDIR=$(INSTALLTOP)/share/doc/$(BASENAME)

HTMLDIR=$(DOCDIR)/html

# MANSUFFIX is for the benefit of anyone who may want to have a suffix

# appended after the manpage file section number.  "ssl" is popular,

# resulting in files such as config.5ssl rather than config.5.

MANSUFFIX=

HTMLSUFFIX=html

CROSS_COMPILE=

CC= $(CROSS_COMPILE)gcc

CFLAGS=-DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DGMI_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"$(OPENSSLDIR)\"" -DENGINESDIR="\"$(ENGINESDIR)\"" -Wall -O3 -pthread -m64 -DL_ENDIAN  -Wa,--noexecstack -Wl,-rpath=$(LIBRPATH)

CFLAGS_Q=-DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DGMI_ASM -DPOLY1305_ASM -DOPENSSLDIR=\"\\\"$(OPENSSLDIR)\\\"\" -DENGINESDIR=\"\\\"$(ENGINESDIR)\\\"\"  -Wa,--noexecstack -Wl,-rpath=$(LIBRPATH)

LDFLAGS=

PLIB_LDFLAGS=

EX_LIBS= -ldl

LIB_CFLAGS=-fPIC -DOPENSSL_USE_NODELETE

# LIB_LDFLAGS=-Wl,-znodelete -m64

LIB_LDFLAGS=-Wl,-rpath=$(LIBRPATH) -znodelete -m64

DSO_CFLAGS=-fPIC -DOPENSSL_USE_NODELETE

DSO_LDFLAGS=$(LIB_LDFLAGS)

若已执行了make install命令则需要执行:make uninstall进行卸载,再进行make clean清除编译生成的过程文件。保存修改后的Makefile后重新运行make install进行安装。

查看效果:ldd /usr/local/bin/gmssl

linux-vdso.so.1 (0x00007fff81994000)

libssl.so.1.1 => /usr/local/lib/libssl.so.1.1 (0x00007f00a293a000)

libcrypto.so.1.1 => /usr/local/lib/libcrypto.so.1.1 (0x00007f00a25ee000)

libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f00a25ca000)

libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f00a25a9000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f00a23e8000)

/lib64/ld-linux-x86-64.so.2 (0x00007f00a2a72000)

上述列出的动态链接库中libcrypto.so.1.1和libssl.so.1.1链接的路径已改为编译生成的库文件。至此可正常运行GMSSL。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值