Ubuntu 18.04安装R 4.1.1的stringi等包提示GLIBCXX版本缺失求助
报错根本原因
Ubuntu 18.04 默认自带的 GCC 版本为 7.x,对应的 libstdc++.so.6 最高仅支持到 GLIBCXX_3.4.24,你安装的 R 包预编译版本依赖更高版本的 GCC 编译出的标准库,因此会出现版本找不到的报错,你之前安装的 libcurl、libssl 依赖和该问题无关。
方案一:升级系统GCC工具链(推荐,适配所有后续R包安装)
- 第一步:添加官方GCC工具链PPA
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update
- 第二步:安装GCC 11及对应g++组件
sudo apt install -y gcc-11 g++-11
- 第三步:配置GCC 11为系统默认版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110
- 第四步:验证依赖版本存在,执行以下命令如果有输出代表配置成功
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.29
- 第五步:重新编译安装stringi
启动R后执行:
install.packages("stringi", type = "source")
方案二:不升级GCC,单独适配stringi安装
如果不想修改系统默认GCC版本,可以通过调用系统自带的ICU库编译stringi:
- 第一步:安装系统ICU依赖
sudo apt install -y libicu-dev
- 第二步:指定编译参数安装stringi
启动R后执行:
install.packages("stringi", configure.args = "--with-icu-install=system")
后续devtools安装说明
完成stringi安装后,直接执行install.packages("devtools")即可正常安装,如果安装过程中其他R包也出现相同的GLIBCXX版本缺失报错,对应报错包都加type = "source"参数重新编译安装即可解决。
内容的提问来源于stack exchange,提问作者Adamm
相关产品推荐
相关产品推荐

