Ubuntu下解决TSS.MSR CPP编译时openssl/sm3.h找不到的问题
解决Ubuntu下编译TSS.CPP时找不到
openssl/sm3.h的问题 问题根源
openssl/sm3.h是OpenSSL 1.1.1版本后新增的头文件,Ubuntu 20.04及更早版本的官方libssl-dev包对应OpenSSL版本低于1.1.1,因此即便安装了该包也无法找到这个头文件。
解决方案
1. 升级Ubuntu系统到22.04及以上版本
Ubuntu 22.04及后续版本默认搭载OpenSSL 3.x,已包含sm3.h头文件。升级完成后重新安装依赖:
sudo apt update && sudo apt upgrade sudo apt install --reinstall libssl-dev
2. 手动编译安装新版OpenSSL(不升级系统)
若不想升级系统,可自行编译支持SM3的OpenSSL版本(推荐1.1.1系列或3.x系列):
- 下载并解压OpenSSL源码(以1.1.1w版本为例):
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar -xf openssl-1.1.1w.tar.gz cd openssl-1.1.1w
- 配置编译参数并指定安装路径:
./config --prefix=/usr/local/openssl
- 编译并安装:
make -j$(nproc) sudo make install
- 编译TSS.CPP时指定新版OpenSSL的头文件和库路径:
CFLAGS="-I/usr/local/openssl/include" LDFLAGS="-L/usr/local/openssl/lib" make
3. 调整TSS.CPP的Makefile(可选)
如果上述方法仍无效,检查TSS.CPP目录下的Makefile,确认是否存在OPENSSL_INCLUDE、OPENSSL_LIB这类指定OpenSSL路径的变量,手动修改为新版OpenSSL的路径后再执行make。
内容的提问来源于stack exchange,提问作者dibii
相关产品推荐
相关产品推荐

