写在前面
我在初学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)文章来源:https://www.toymoban.com/news/detail-819418.html
在这里去添加你的openssl的头文件路径
在这里用+=的方式给App_Link_Flags追加你的openssl库文件的路径
(2)Enclave.cpp配置
这里配置openssl的头文件路径
这里配置openssl的库文件路径(这里按照格式进行添加,用+=追加的方式不太行)文章来源地址https://www.toymoban.com/news/detail-819418.html
到了这里,关于intel SGX学习笔记(10):SGX项目openssl在App和Encalve中使用的配置问题和openssl库的路径配置问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!