Ubuntu 18.04下R 4.4.2安装包时编译器找不到charconv头文件
解决Ubuntu 18.04下R 4.4.2安装curl包时的编译错误
错误原因
charconv是C17标准库的头文件,但Ubuntu 18.04默认的gcc/g 7.5.0对C++17的支持不完全,缺失该头文件。- R 4.4.2默认启用C++17编译依赖包,导致curl包编译时触发此错误。
解决方案
方法一:升级编译器到gcc 8及以上
- 添加Ubuntu Toolchain PPA以获取更高版本编译器:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update
- 安装gcc-8和g++-8:
sudo apt install gcc-8 g++-8
- 设置gcc-8和g++-8为默认编译器:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8
- 验证版本切换结果:
gcc --version g++ --version
确认输出显示gcc版本为8.x.x后,重新在R中安装所需包。
方法二:强制R使用C++14编译
如果不想升级编译器,可修改R的编译标准:
- 临时生效(仅当前R会话):
在RStudio中执行:
Sys.setenv(CXX17 = "g++ -std=c++14") install.packages("curl") install.packages(c("sesame", "minfi"))
- 永久生效(所有R会话):
创建或编辑~/.R/Makevars文件:
mkdir -p ~/.R echo 'CXX17 = g++ -std=c++14' >> ~/.R/Makevars
重启RStudio后再安装包即可。
内容的提问来源于stack exchange,提问作者StlCh
相关产品推荐
相关产品推荐

