Linux学习笔记
Openeuler中OpenSSL的安装
20191318王泽文
参考链接https://www.cnblogs.com/rocedu/p/5087623.html进行OpenSSL的安装。
从官网下载最新版OpenSSL,这里下载的是openssl-3.0.0.tar.gz 。
使用tar
解压源代码。
tar xzvf openssl-1.1.0-pre1.tar.gz
进入到OpenSSL的文件夹中。
然后使用下列命令编译安装:
./Configure
make
sudo make install
使用make test
测试没有问题。
使用参考链接中的代码进行测试:
测试代码test_openssl.c:
#include <stdio.h>
#include <openssl/evp.h>
int main(){
OpenSSL_add_all_algorithms();
return 0;
}
然后用下面命令编译:
gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -ldl -lpthread
报错
查看代码中OpenSSL_add_all_algorithms()
所在头文件evp.h
中的定义发现OPENSSL_init_crypto
函数确实被引用,再查询文件或查询安装信息发现OPENSSL_init_crypto
所在文件crypto.h
和evp.h
都位于/usr/local/include/openssl
而不是/usr/local/ssl/inlcude
接着,我们使用修改后的命令编译gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -ldl -lpthread
依旧报同样错误。
这时,发现所用的lib库不存在
通过查找安装信息,发现lib安装在/usr/local/lib64
中,通过库文件可以得知crypto.h
和evp.h
都在crypto的库中
重新编译、
gcc -o to test_openssl.c -I /usr/local/include/openssl -L /usr/local/lib64 -lcrypto -lpthread
执行
./to;echo $?
发现报错
通过查找lib64发现确实没有libcrypto.so.3文件,并没有将其安装上,但有libcrypto.so.1.1文件,这时可以通过两种方法解决。
- 直接使用系统自带的旧版本的libcrypto.so.1.1文件编译
gcc -o to test_openssl.c -I /usr/local/include/openssl /usr/lib64/libcrypto.so.1.1 -lpthread
- 在解压的OpenSSL-3.0文件夹中,可以发现有libcrypto.so.3文件,可以通过将其放入lib64中解决。
cp /wzw/openssl-3.0.0/libcrypto.so.3 /usr/lib64/libcrypto.so.3