CentOS6.4下编译R时libcurl无HTTPS支持问题求助
解决CentOS6.4编译R-3.4.3时libcurl HTTPS检测失败的问题
我之前在CentOS6环境下也碰到过类似的坑,结合你的情况,咱们可以从这几个方向排查解决:
1. 先确认手动编译的curl真的正确绑定了OpenSSL
虽然curl-config --protocols显示支持HTTPS,但R的configure检测逻辑更严格,会验证编译时的链接依赖是否完整:
- 查看curl编译时的配置参数:
/usr/local/curl-7.57.0/bin/curl-config --configure,确认输出里明确包含--with-ssl(如果用系统自带OpenSSL)或者--with-ssl=/path/to/your/openssl(如果是手动编译的OpenSSL)。 - 检查curl的动态链接依赖:
ldd /usr/local/curl-7.57.0/bin/curl,看是否能找到libssl.so和libcrypto.so这两个OpenSSL核心库。如果显示not found,说明curl编译时没正确链接OpenSSL,需要重新编译:# 进入curl源码目录(如果还保留的话) cd /path/to/curl-7.57.0 make clean # 系统自带OpenSSL用这个命令 ./configure --prefix=/usr/local/curl-7.57.0 --with-ssl # 手动编译的OpenSSL则指定路径 ./configure --prefix=/usr/local/curl-7.57.0 --with-ssl=/usr/local/openssl make && make install
2. 给R的configure补充OpenSSL相关环境变量
你之前只设置了curl的头文件和库路径,但R检测HTTPS时还需要能找到OpenSSL的依赖。补充以下环境变量再试:
# 如果是系统自带OpenSSL,CentOS6 64位用lib64,32位用lib export CPPFLAGS="-I/usr/local/curl-7.57.0/include -I/usr/include/openssl" export LDFLAGS="-L/usr/local/curl-7.57.0/lib -L/usr/lib64" export LIBS="-lcurl -lssl -lcrypto" # 再执行R的configure命令 ./configure --prefix=/usr/local/R-3.4.3 --enable-R-shlib
如果是手动编译的OpenSSL,把上面的/usr/include/openssl和/usr/lib64换成你的OpenSSL安装路径(比如/usr/local/openssl/include和/usr/local/openssl/lib)。
3. 更新系统库缓存
手动编译的库可能没被系统缓存识别,执行以下命令让系统能找到你的curl和OpenSSL:
echo "/usr/local/curl-7.57.0/lib" >> /etc/ld.so.conf.d/curl.conf # 如果是手动编译的OpenSSL,加上这一行 echo "/usr/local/openssl/lib" >> /etc/ld.so.conf.d/openssl.conf ldconfig
4. 查看configure日志定位细节(可选)
如果上面的步骤都没用,可以查看R configure的详细日志,找到具体失败原因:
./configure --prefix=/usr/local/R-3.4.3 --enable-R-shlib 2>&1 | grep -A 10 -B 5 "checking if libcurl supports https"
从日志里能看到测试代码的执行错误,比如是不是链接时找不到某个库,这样能更精准定位问题。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

