intel SGX学习笔记(10):SGX项目openssl在App和Encalve中使用的配置问题和openssl库的路径配置问题

写在前面

我在初学SGX项目中,在安全区和非安全区下载和引入openssl库的时候会遇到各种各样的问题,稀奇古怪的,尤其是openssl的路径问题和make指令编译出现的问题,自己也做了几天的尝试解决,下面是我做出的一些解决方法,最终还是解决问题了,不对的地方请大家指点!!!

问题一 终端输入openssl verison出现openssl: error while loading shared libraries: libssl.so.x.x.x: cannot open shared object file: No such file or directory

master@master:~$ openssl version
openssl: error while loading shared libraries: libssl.so.x.x.x: cannot open shared object file: No such file or directory

解决方法:

1、升级你的openssl库
2、去找你的libssl.so.x.x.x文件
3、做一个软链接,将原本的地址连接到全局环境变量能访问到的位置

sudo ln -s /usr/local/lib64/libssl.so.x.x.x /usr/lib64/libssl.so.x.x.x
sudo ln -s /usr/local/lib64/libssl.so.x.x.x /usr/lib64/libssl.so.x.x.x

问题二 #include<opensslconf.h>找不到

解决方法:在你的opensslssl安装目录中搜索opensslconf.h,并复制到报错的路径,因为报错提示就是在你的openssl安装路径缺少这个文件,这其实是因为文件不在那里,你得手动复制过去,网上还有其他方法,在makefile文件中修改它的编译位置,我是试过了,不行

在这里插入图片描述

问题三 在代码的头文件#include<openssl/xxx>文件找不到

但是你发现你在报错的路径下,可以找到这个文件,或者在你的openssl路径下也能找到这个openssl的库的头文件
在这里插入图片描述

解决方法1:openssl的头文件路径有问题,按照上面的方法解决,找到你自己openssl头文件和库文件的准确路径

(1)终端输入命令查看你库文件路径

openssl version -a | grep "OPENSSLDIR" | awk -F': ' '{print $2}'

在这里插入图片描述
(2)终端输入命令查看你的头文件路径

dpkg -L libssl-dev | grep "/usr/include/openssl"

在这里插入图片描述

你也可以自己去查,一般默认的安装路径在/usr/include/或者/usr/local/路径下

解决方法2:在makefile的配置出现路径的上下级错误,比如你在makefile中添加的配置路径到/user/local/include/openssl,那么你在你的文件中就不能写#include<openssl/xxx>而是直接写#include<xxx>这个函数文件名字即可,要不然你就在makefile文件中添加路径到上一级/user/local/include/

在这里插入图片描述
在这里插入图片描述

问题四 使用SGX的时候,make编译出现#include<openssl/xxx>文件找不到,添加#include头文件等问题

在这里插入图片描述
在这里插入图片描述

解决方法:对非安全区和安全区同时设置openssl库的编译配置

1、升级openssl库的版本为3.1.4
在我之前的文章中重新安装openssl3.1.4版本,注意你下载的版本号在官网要找对
链接:intel SGX学习笔记(4)

2、设置软连接

sudo ln -s /usr/local/lib64/libssl.so.3 /usr/lib64/libssl.so.3
sudo ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3

做到这步之前一定要保证你输入的openssl version能输出你的openssl版本,而且库函数的路径和头文件的路径一定要准确,否则前功尽弃,后面也没用
在这里插入图片描述

3、makefile文件配置,这里会对非安全区App.cpp文件和安全区Enclave.cpp文件进行单独配置
(1)终端输入命令查看你库文件路径

openssl version -a | grep "OPENSSLDIR" | awk -F': ' '{print $2}'

在这里插入图片描述
(2)终端输入命令查看你的头文件路径

dpkg -L libssl-dev | grep "/usr/include/openssl"

在这里插入图片描述

3、SGX项目的makefile文件进行修改

这里注意,在SGX的项目的编译配置中,非安全区的App.cpp和安全区的Enclave.cpp是要分开配置的你打开makefile文件也可以看见,你要用到哪个配置你就在哪个地方配置

这里就是配置非安全区的App.cpp的地方,
在这里插入图片描述
这里就是配置安全区的Enclave.cpp的地方
在这里插入图片描述
(1)App.cpp配置
在我前面的文章里也说明了这个如何配置,链接:intel SGX学习笔记(4)

在这里去添加你的openssl的头文件路径
在这里插入图片描述
在这里用+=的方式给App_Link_Flags追加你的openssl库文件的路径
在这里插入图片描述
(2)Enclave.cpp配置
这里配置openssl的头文件路径
在这里插入图片描述
这里配置openssl的库文件路径(这里按照格式进行添加,用+=追加的方式不太行)在这里插入图片描述

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值