centos7 编译 curl 问题解决

在编译过程中遇到一个错误,涉及到Curl_send_plain函数中的结构体成员访问。错误指出尝试访问addr和addrlen,但它们不是结构或联合体的成员。解决方案是包含cf-socket.h头文件,并在条件检查中正确使用MSG_FASTOPEN和TCP_FASTOPEN_CONNECT,特别是在处理tcp_fastopen选项时,正确调用sendto函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译:

./buildconf (libtool 、automake)

./configure --prefix=/usr/local --enable-static --without-ssl

make && make install

问题

sendf.c: In function 'Curl_send_plain':

sendf.c:366:45: error: request for member 'addr' in something not a structure or union

conn->remote_addr.addr, conn->remote_addr.addrlen);

^

sendf.c:366:69: error: request for member 'addrlen' in something not a structure or union

conn->remote_addr.addr, conn->remote_addr.addrlen);

解决

#include "cf-socket.h"

...

#if defined(MSG_FASTOPEN) && !defined(TCP_FASTOPEN_CONNECT) /* Linux */

if(conn->bits.tcp_fastopen) {

bytes_written = sendto(sockfd, mem, len, MSG_FASTOPEN,

&conn->remote_addr->sa_addr, conn->remote_addr->addrlen);

conn->bits.tcp_fastopen = FALSE;

}

else

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值