ubuntu20编译Gmssl时,“version OPENSSL_1_1_0d not defined”问题的较好解决办法

8 篇文章 0 订阅
8 篇文章 0 订阅

编译安装gmssl后,运行遇到问题:

error:while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory gmssl: symbol BIO_debug_callback version OPENSSL_1_1_0d not defined in file libcrypto.so.1.1 with link time reference

这个问题应该时找到了gmssl运行时的依赖库libssl.so.1.1。但这个库并不是跟gmssl编译时同时生成的库,而是ubuntu原有的同名库。用ldd命令可以查看:

ldd  /usr/local/bin/gmssl 

解决办法:

修改Gmssl的Makefile文件,在CFLAGS赋值时添加-Wl,-rpath=$(LIBRPATH),LIB_LDFLAGS赋值LIB_LDFLAGS=-Wl,-rpath=$(LIBRPATH) -znodelete -m64

重新编译、安装:

make clean
make install

ldconfig命令慎用。

https://download.csdn.net/download/eidolon_foot/14504947

参考:

linux 编译安装GmSSL记录_sihuibin的博客-CSDN博客

文心一言

在Ubuntu 20上编译Gmssl时遇到“version OPENSSL_1_1_0d not defined”的问题,这通常意味着Gmssl在编译时链接到了一个不兼容的OpenSSL库版本。要解决这个问题,你可以尝试以下步骤:

  1. 确认OpenSSL版本:首先,你需要确认你的系统中安装的OpenSSL版本。你可以通过运行openssl version命令来查看。如果版本低于Gmssl所需要的版本,你可能需要升级OpenSSL。
  2. 升级OpenSSL:如果系统中的OpenSSL版本过低,你需要升级它。可以使用Ubuntu的软件包管理器来升级,如sudo apt-get updatesudo apt-get install openssl。确保安装的是Gmssl兼容的版本。
  3. 静态链接:如果动态链接仍然出现问题,你可以尝试静态链接OpenSSL库。在Gmssl的编译配置中,确保OpenSSL库是静态链接的。这通常需要在编译命令或Makefile中添加相应的标志。
  4. 修改Makefile:如果上述步骤仍然无法解决问题,你可能需要直接修改Gmssl的Makefile文件。在CFLAGS赋值时添加-Wl,-rpath=$(LIBRPATH),并在LIB_LDFLAGS赋值时添加-Wl,-rpath=$(LIBRPATH) -znodelete -m64。然后重新编译和安装Gmssl。
  5. 清理和重新配置:在进行任何修改后,确保先清理旧的编译文件(例如,使用make clean命令),然后重新配置和编译Gmssl。
  6. 检查依赖关系:确保所有Gmssl的依赖项都已正确安装,并且版本兼容。有时,缺失或不兼容的依赖项会导致链接错误。
  7. 查看文档和社区支持:如果上述步骤都不能解决问题,建议查看Gmssl的官方文档和社区支持。可能有其他用户遇到了相同的问题,并找到了解决方案。

请注意,由于Gmssl和OpenSSL的版本可能会不断更新,所以具体的解决方案可能会随着时间的推移而有所变化。因此,保持对最新文档和社区讨论的关注是很重要的。

GhatGPT

出现 "version OPENSSL_1_1_0d not defined" 的错误通常是由于在编译 GmSSL(或其他依赖 OpenSSL 的软件)时,系统中使用的 OpenSSL 库版本与 GmSSL 预期的版本不匹配所导致的。GmSSL 是一个开源的加密库,基于 OpenSSL,并增加了对国密算法的支持。
为了解决这个问题,你可以采取以下步骤:
1. **确认系统的 OpenSSL 版本**:
   在命令行中输入以下命令检查系统中安装的 OpenSSL 版本:

   openssl version

   确认你的系统是否安装了正确版本的 OpenSSL(例如:1.1.0d)。如果系统中没有安装,或者安装的版本不符合 GmSSL 编译要求的版本,你可能需要升级或安装合适的版本。
2. **安装指定版本的 OpenSSL**:
   如果需要特定版本的 OpenSSL,你可以从源代码编译安装。首先从 OpenSSL 官方网站下载对应版本的源代码,然后解压、编译并安装。例如,安装 OpenSSL 1.1.0d 可按照以下步骤进行:

   wget https://www.openssl.org/source/openssl-1.1.0d.tar.gz
   tar -zxf openssl-1.1.0d.tar.gz
   cd openssl-1.1.0d
   ./config
   make
   sudo make install

   安装后可能需要运行 ldconfig 来更新库缓存。
3. **设置环境变量**:
   确保在编译 GmSSL 时使用正确路径的 OpenSSL 库。你可能需要设置环境变量如 LD_LIBRARY_PATH 指向新安装的 OpenSSL 库:

   export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

   重新打开终端或在当前终端中运行以上命令以确保环境变量生效。
4. **编译 GmSSL**:
   在设置好环境变量后,从 GmSSL 的 Github 仓库克隆代码,然后编译:

   git clone https://github.com/guanzhi/GmSSL.git
   cd GmSSL
   ./config
   make
   sudo make install

5. **解决可能的冲突**:
   如果系统中存在多个版本的 OpenSSL,可能会导致编译时发生冲突。确保 pkg-config 或编译配置正确指向你想要使用的 OpenSSL 版本。修改 GmSSL 的 Makefile 或配置脚本,指定正确的 include 路径和库路径。
如果上述步骤仍未能解决你的问题,你可能需要在 GmSSL 的官方文档中查找更具体的安装指南或在其社区中提出问题以获得帮助。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

109702008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值