Ubuntu22.04下安装R4.3.1的data.table包遇未定义符号错误
解决Ubuntu 22.04下R 4.3.1安装data.table时
brl_deflateReset未定义的问题 问题原因
该错误源于编译data.table时,链接的zlib库版本与系统或R依赖的版本不匹配,或是编译过程未正确关联系统zlib库。
解决方案
1. 确保系统zlib相关依赖完整安装
执行以下命令更新包列表并安装所有必要的zlib及相关压缩库:
sudo apt update sudo apt install zlib1g zlib1g-dev liblzma-dev libbz2-dev
2. 强制R使用系统zlib编译data.table
先卸载已安装的不完整版本,再设置编译环境变量,强制链接系统zlib库后重新安装:
# 卸载损坏的data.table版本 remove.packages("data.table") # 设置编译与链接参数 Sys.setenv(CFLAGS="-I/usr/include/zlib1g") Sys.setenv(LDFLAGS="-L/usr/lib/x86_64-linux-gnu -lz") # 从CRAN重新安装源码版 install.packages("data.table", type="source")
3. 尝试从GitHub源码编译安装
若CRAN源安装仍失败,直接拉取最新源码编译:
# 安装devtools(未安装时执行) if (!require(devtools)) install.packages("devtools") # 重复设置编译环境变量 Sys.setenv(CFLAGS="-I/usr/include/zlib1g") Sys.setenv(LDFLAGS="-L/usr/lib/x86_64-linux-gnu -lz") # 从GitHub安装 devtools::install_github("Rdatatable/data.table")
4. 检查R的编译配置
若以上步骤无效,验证R是否正确识别系统zlib:
在R中运行以下命令:
system("R CMD config LDFLAGS") system("R CMD config CFLAGS")
确认输出包含-lz和-I/usr/include/zlib1g相关内容。若缺失,需修改R的全局配置文件/etc/R/Makeconf,在对应字段添加上述编译与链接参数。
内容的提问来源于stack exchange,提问作者Neodim Kollobok
相关产品推荐
相关产品推荐

