You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Amazon Linux的Docker构建中glmnet编译失败问题求助

解决AWS Lambda R Docker镜像构建中glmnet编译的relocation R_X86_64_32错误

问题场景

基于Amazon Linux基础镜像,参考lambdr包模板构建AWS Lambda的R工作负载Docker镜像时,安装glmnet包失败。已完成gcc、gcc-c++及glmnet依赖包(foreach、iterators、Rcpp等)的正常安装,但执行docker build时,glmnet编译出现relocation R_X86_64_32错误,无法生成共享对象。

错误原因

该错误源于64位系统下编译时使用了32位内存寻址模式。Amazon Linux基础镜像默认编译选项未强制启用64位模式,而glmnet的底层C/C++代码在编译时未明确指定64位参数,导致触发 relocation 错误。

解决方法

1. 全局设置64位编译环境变量

在Dockerfile中安装glmnet前,添加以下环境变量配置,强制编译器使用64位模式:

ENV CFLAGS="-m64"
ENV CXXFLAGS="-m64"

随后执行glmnet安装命令:

R -e "install.packages('glmnet', repos='https://cran.rstudio.com/')"

2. 安装时直接指定编译参数

若无需全局修改环境变量,可在安装命令中直接传递64位编译选项:

R -e "install.packages('glmnet', repos='https://cran.rstudio.com/', configure.args='--with-cxxflags=-m64')"

3. 更新编译工具链

确保Amazon Linux镜像中的gcc、gcc-c++为最新版本,执行更新命令后再尝试安装:

yum update -y gcc gcc-c++

内容的提问来源于stack exchange,提问作者Alberto Agudo Dominguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 20:02:06