cmake报错:Unsupported protocol

在编译ApacheArrow时遇到Unsupportedprotocol错误,发现并非curl不支持https。实则是cmake自建的curl不支持。重新编译cmake,指定使用系统curl,安装依赖curl-devel和zlib-devel,最终成功解决编译问题。

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

现象

最近在用cmake编译Apache arrow时,竟然报了错:
在这里插入图片描述

排查过程

最开始在网上直接搜“Unsupported protocol”,查到的说是因为安装的curl不支持https,需要先使用如下命令查询curl支持的协议:

curl -V

然而查出来却是支持https的:
在这里插入图片描述
这就奇怪了,我的curl明明支持,怎么告诉我不支持呢?

加上了cmake关键词再搜索,终于在知乎上搜到一篇文章1指出,可能是由于cmake安装时出了问题。
然而我按文章中的办法重新编译了cmake依然报错。

最后终于在stackoverflow上找到了一篇文章2,解释是由于安装cmake时,编译出了问题:
在使用cmake源码编译安装时,如果不特殊指定,则会自己编译一个curl,而cmake自己编译的cmake是不支持https的。

结论

cmake编译安装出了问题,需要重新安装,并在安装时指定使用系统自带的curl

以我使用的CentOS7为例,重新编译安装的过程如下:

  1. 首先安装依赖的curl和zlib:
sudo yum install -y curl-devel zlib-devel

注:这里需要使用devel版本。另外zlib是由于我安装时提醒需要。

  1. 之后进入cmake的编译目录,这里我是在源码中新建了一个build文件夹。
../bootstrap --prefix=/usr/local/cmake3.14.7 --system-curl

注:这里加了prefix是指定了安装的目录,方便我之后根据不同项目可以切换不同版本的cmake。

  1. 最后安装:
gmake -j8 && gmake install

至此重新编译Arrow,终于成功。


  1. 文章链接 ↩︎

  2. 文章链接 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值