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