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

Ubuntu 22.04 源码编译R-3.6.1遇链接错误求助

解决Ubuntu 22.04源码编译R-3.6.1的tools.so链接错误问题

问题根源

Ubuntu 22.04默认的flex版本(2.6.4及以上)与R-3.6.1源码中的lexer代码不兼容,导致编译时出现yyllocL未定义符号的链接错误。

具体解决步骤

1. 安装兼容的低版本flex

下载并编译flex 2.6.3(与R-3.6.1兼容),避免替换系统默认版本:

# 创建临时编译目录
mkdir ~/flex-build && cd ~/flex-build
# 下载flex 2.6.3源码包
wget https://github.com/westes/flex/releases/download/v2.6.3/flex-2.6.3.tar.gz
tar xzf flex-2.6.3.tar.gz && cd flex-2.6.3
# 编译安装到自定义路径(示例为~/local/flex)
./configure --prefix=$HOME/local/flex
make && make install

2. 指定编译时使用低版本flex

在编译R-3.6.1前,将低版本flex的路径加入环境变量,确保编译过程优先调用该版本:

export PATH=$HOME/local/flex/bin:$PATH
export LD_LIBRARY_PATH=$HOME/local/flex/lib:$LD_LIBRARY_PATH

3. 重新编译R-3.6.1

清理之前的编译残留,重新配置并编译:

# 进入R-3.6.1源码目录
cd /path/to/R-3.6.1
# 清理编译残留文件
make clean && rm -rf config.log config.status
# 配置编译选项(根据需求调整,示例指定安装到共享目录)
./configure --prefix=/path/to/shared/R-3.6.1 --enable-R-shlib
# 编译并安装
make && make install

4. 验证安装结果

编译完成后,检查R版本并确认tools.so的符号问题已解决:

# 检查R版本
/path/to/shared/R-3.6.1/bin/R --version
# 验证tools.so中的符号
nm -D /path/to/shared/R-3.6.1/lib/R/library/tools/libs/tools.so | grep yyllocL

额外注意事项

  • 若编译时遇到其他依赖缺失,安装R编译所需的完整依赖包:
sudo apt-get install build-essential libcurl4-openssl-dev libssl-dev libxml2-dev libxt-dev libpng-dev libjpeg-dev libtiff-dev
  • 共享目录部署时,确保所有节点的环境变量正确指向该R版本的bin和lib路径。

内容的提问来源于stack exchange,提问作者Dr. Soong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:26:01