在R中加载curl包时遇共享对象加载错误求助
解决R中curl包加载时
_curl_url_strerror符号找不到的错误 错误原因
这个报错是因为R的curl包编译时依赖的libcurl库版本过低,_curl_url_strerror是libcurl 7.85.0及以上版本才新增的函数,而Mac系统自带的libcurl通常版本较旧,导致链接时找不到该符号。
解决步骤
1. 检查并更新系统libcurl(通过Homebrew)
- 打开终端,先更新Homebrew:
brew update - 安装或更新最新版libcurl:
brew install curl
2. 指定Homebrew版libcurl重新编译R的curl包
- 打开R(或RStudio),先卸载现有curl包:
remove.packages("curl") - 根据你的Mac架构设置环境变量:
- Intel芯片Mac:
Sys.setenv(CURL_LIBS = "-L/usr/local/opt/curl/lib -lcurl") Sys.setenv(CURL_CFLAGS = "-I/usr/local/opt/curl/include") - Apple Silicon(M1/M2/M3)芯片Mac:
Sys.setenv(CURL_LIBS = "-L/opt/homebrew/opt/curl/lib -lcurl") Sys.setenv(CURL_CFLAGS = "-I/opt/homebrew/opt/curl/include")
- Intel芯片Mac:
- 从源码重新安装curl包:
install.packages("curl", type = "source")
3. 验证修复
安装完成后,加载curl包测试:
library(curl)
如果没有报错,说明问题解决。
备选方案(临时生效)
如果上述方法无效,可以临时指定动态库路径再启动R:
- 终端中执行:
# Intel Mac export DYLD_LIBRARY_PATH=/usr/local/opt/curl/lib:$DYLD_LIBRARY_PATH # Apple Silicon Mac export DYLD_LIBRARY_PATH=/opt/homebrew/opt/curl/lib:$DYLD_LIBRARY_PATH - 从终端启动R:
R - 加载curl包测试。若有效,可将上述
export命令添加到~/.zshrc(或~/.bash_profile,取决于你使用的shell)中,实现永久生效。
额外检查
确保已安装Xcode命令行工具,若未安装,终端执行:
xcode-select --install
内容的提问来源于stack exchange,提问作者stepback3
相关产品推荐
相关产品推荐

