下载opensll:http://www.openssl.org/source/
在Linux下使用tar 命令进行安装:tar xzvf openssl-3.0.0-beta2.tar.gz
解压完成:
查看./config文件
使用make进行编译
使用sudo make install命令
./config:生成一个makefile并检查一下文件,在执行make将源码编译为库文件或者二进制文件,在执行make install(sudo)进行安装,安装完成后可以使用openssl version -a进行查看
发生库连接的错误,查阅资料将库进行连接一下
(这里可以根据情况连接道lib32还是lib)
sudo ln -s /usr/local/lib64/libssl.so.3 /usr/lib
sudo ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib/
在次执行版本查看命令:openssl version -a
遗留问题:usr/lib和usr/local的作用
查看一下安装的头文件和库文件
安装完成后使用测试案例对函数进行调用
调用程序:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/md5.h>
#include <sys/types.h>
#include <unistd.h>
void getMD5(const char* str,char* result)
{
MD5_CTX ctx;
MD5_Init(&ctx);
MD5_update(&ctx,str,strlen(str));
unsigned char md[16] = {0};
MD5_Final(md,&ctx);
for(int i = 0;i < 16;++i)
{
sprintf(&result[i*2],"%02x",md[i]);
}
}
int main()
{
char result[33] = {0};
getMD5("hello,md5",result);
printf("md5 value:%s\n",result);
return 0;
}
//参数
//-I(include):头文件的路径:locate md5.h
//-L(lib):库的路径:locate libssl.so
//加上具体的库的名字-lssl -lcrypto
//编译gcc md5_test.c -I/usr/local/include -
使用编译:gcc -o to test_opensll.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -ldl -lpthread
gcc -o to md5_test.c -I /usr/local/inlcude -L /usr/local/lib64 -lssl -lcrypto
编译时,不加路径的情况:
如果没有指定任何安装目录则安装到系统指定的默认目录之下去,如果自己指定了安装路径则在编译的时候必须要加上。
发现问题:test_opensll.c:(.text+0xf):对‘OPENSSL_init_crypto’未定义的引用