CentOS7 Docker中安装rgdal 1.6-6遇CXX11支持错误求解决
解决rgdal 1.6-6在CentOS7 Docker环境下的安装错误
问题原因
你的gcc 7.3.1完全支持C11,但rgdal的configure脚本检测不到C11支持,核心原因是编译时的CXXFLAGS没有明确指定C11标准。从安装日志可见,当前CXXFLAGS仅包含-g -O2,缺少-std=gnu++11的声明,导致脚本误判编译器不支持C11。
解决方案
通过环境变量强制指定C++11编译标准,确保GDAL相关路径被正确识别,执行以下步骤:
- 先设置环境变量:
export CXXFLAGS="-std=gnu++11 -g -O2" export CPPFLAGS="-I/usr/local/include" export LDFLAGS="-L/usr/local/lib"
- 若在R命令行中安装,执行:
install.packages("rgdal", version = "1.6-6", type = "source")
- 若在Dockerfile中集成安装,可合并命令:
RUN export CXXFLAGS="-std=gnu++11 -g -O2" && \ export CPPFLAGS="-I/usr/local/include" && \ export LDFLAGS="-L/usr/local/lib" && \ R -e "install.packages('rgdal', version='1.6-6', type='source')"
可选验证步骤
若仍失败,可先验证编译器本身的C++11支持:
echo "#include <iostream> int main() { return 0; }" > test.cpp && g++ -std=gnu++11 test.cpp -o test && ./test && rm test test.cpp
如果命令正常执行,说明编译器无问题,只需确保安装rgdal时环境变量正确传递即可。
内容的提问来源于stack exchange,提问作者monkey
相关产品推荐
相关产品推荐

