Mac 2017安装R包sf遇C++版本过低及GDALAllRegister未找到问题求助
解决2017款Mac上安装R包sf的编译错误
我来帮你一步步搞定这个sf包的安装问题,你遇到的两个报错(C++版本要求和GDAL符号找不到)其实是关联的,咱们逐个解决:
第一步:强制启用C++11编译标准
你的报错里明确提示Must have C++11 or newer,这是因为R默认的编译选项可能没开启C++11支持。你可以通过两种方式设置:
临时生效(仅当前R会话)
打开R,运行以下代码:
Sys.setenv(CFLAGS="-std=c++11") Sys.setenv(CXXFLAGS="-std=c++11")
永久生效(所有R会话)
- 在你的用户主目录下创建
.R文件夹(如果还没有的话):mkdir -p ~/.R - 在
.R文件夹里创建Makevars文件,写入以下内容:CXXFLAGS += -std=c++11 CFLAGS += -std=c++11
第二步:替换稳定版GDAL库
你当前使用的是Homebrew的GDAL开发预览版(HEAD-41888),这类版本可能存在API兼容性问题,导致GDALAllRegister符号找不到。建议换成稳定版:
卸载当前的GDAL开发版:
brew uninstall gdal安装官方稳定版GDAL:
brew install gdal获取GDAL的安装路径(确认工具位置):
brew info gdal输出里会显示类似
/usr/local/opt/gdal的路径,记住这个路径。在R中指定GDAL配置工具路径,然后安装sf:
Sys.setenv(GDAL_CONFIG="/usr/local/opt/gdal/bin/gdal-config") install.packages("sf", type="source")
额外建议:考虑升级R版本
你的R版本是3.4,属于比较老旧的版本了,sf 0.6-3对旧版R的兼容性可能有限。如果上面的步骤还是失败,建议升级R到4.x版本,新版本的R会默认适配更现代的编译工具链,减少这类兼容性问题。
内容的提问来源于stack exchange,提问作者Roy Luo
相关产品推荐
相关产品推荐

