源码编译curl支持openssl

本文详细介绍了OpenSSL不同版本之间的支持情况、命名规则及版本差异,包括1.0.1与1.0.2系列的兼容性、1.0.x与1.1.1的重大变化。在编译安装OpenSSL和curl时,需要注意版本匹配和存在的问题,如RAND_egd函数的弃用。文章还提供了编译步骤和解决编译问题的方法,确保程序的兼容性。
摘要由CSDN通过智能技术生成
OpenSSL版本问题

注:openssl版本问题主要是方便自己查阅
OpenSSL各版本官方的支持情况:

OpenSSl版本官方支持
0.9.8不再支持
1.0.0不再支持
1.0.1不再支持
1.0.2后续不再支持
1.1.1支持到2023年9月11日
3.0.0目前最新版本,支持中

版本命名方式(x_x_x-prex预览版 ; x.x.x-beta/alpha测试版 ; x_x_x正式版 ; x_x_x[a-z]延伸版 )
版本命令规则:
openssl 1.0.1a 后面的字母变动表示:bug或安全漏洞的修复,不会增加新的feature;
openssl 1.0.2 最后一个数字变动表示:新增了新的feature,并兼容以前的版本;
而中间的数字变动后,此时source和binary可能都不兼容了。

版本差异:
(1)1.0.1和1.0.2这两个系列版本变化相对较小,大部分接口可以通用;
(2)1.0.x和1.1.1这两个系列的差别比较大,很多在1.0.x中的函数接口在1.1.1中都转为内部接口或者被移除了;
(3)各个版本的预览版、正式版、延伸版都存在一定的差异;
例如:
在1.0.x的版本中在ssl目录下有kssl.c/kssl.h处理krb5,而在1.1.1版本中移除了kssl.c/kssl.h这个两个文件;
在 1.0.2d 版本中可以调用到一些与 ASN.1 编码有关的底层函数,例如:M_i2d_ASN1_OCTET_STRING( ),M_ASN1_BIT_STRING_free( ) 等。在 1.1.1 系列中,这些以 M_ 开头的 ASN.1 编码函数都被删去了。
具体的差异,需要在使用前调研相关版本,或使用时遇到问题后查询对应版本;

在使用OpenSSL时,一定要注意不同版本之间存在的差异问题,不同版本的差异可能会给程序带来兼容问题;

安装OpenSSL库

国内在github上下载会比官网上快一点:https://github.com/openssl/openssl(我这里下载的最新稳定1.1.1j版本)
编译步骤:
./config --prefix=path (设置安装目录,方便curl引用)
make && make install

查看是否安装成功:
cd path/bin
./openssl version (因为这里是安装到自定义目录下,需要设置编译生成的动态库程序使程序可以引用,例如放到系统lib目录下)
查看编译的ssl版本输出: OpenSSL 1.1.1j 16 Feb 2021

安装curl库

国内在github上下载会比官网上快一点:https://github.com/curl/curl(7.78.0)
编译步骤:
./configure --with–openssl=path (可以使用./configure --help 查看自己需要开启或者关闭无用的选项)
make && make install

根据configure输出查看依赖的ssl版本:
checking for OpenSSL headers version… 1.1.1 - 0x101010afL
checking for OpenSSL library version… 1.1.1

在./configure过程中遇到的问题:
vtls/openssl.c:479:15: error: implicit declaration of function ‘RAND_egd’ [-Werror=implicit-function-declaration]
int ret = RAND_egd(data->set.str[STRING_SSL_EGDSOCKET]?
解决方式:我这里是因为存在一个老版本的ssl影响到了curl的编译执行,移除已存在的老版本(可以通过find全局搜索老版本的ssl),即可正常编译;

查看curl是否编译成功:
在这里插入图片描述
运行curl --version,查看输出curl的版本和是否支持openssl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值