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

Ubuntu22.04升级R4.4后安装vroom等包编译错误求助

R4.4升级后包编译错误的解决办法

问题详情

把Ubuntu22.04上的R升级到4.4版本后,重装R包时多个包都出现编译失败的问题。比如装vroom包时,运行install.packages("vroom")会得到以下错误:

cc1plus: some warnings being treated as errors
make: *** [/usr/lib/R/etc/Makeconf:202 : delimited_index.o] Error 1
ERROR: compilation failed for package ‘vroom’
* removing ‘/home/username/R/x86_64-pc-linux-gnu-library/4.4/vroom’

对应的警告信息示例如下:

/usr/lib/R/site-library/cpp11/include/cpp11/protect.hpp:337:42: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 5 has type ‘SEXP’ {aka ‘SEXPREC*’} [-Wformat=]
  337 |       REprintf("%x CAR: %x CDR: %x TAG: %x\n", head, CAR(head), CDR(head), TAG(head));
      |                                         ~^                                 ~~~~~~~~~
      |                                          |                                    |
      |                                          unsigned int                         SEXP {aka SEXPREC*}

所有警告的格式都一样,只是protect.hpp后面的行号不同,参数2到5都存在这种类型的警告。之前试过重装Rcpp包,没用。

解决步骤(无需回退到R4.3)

  • 临时关闭警告转错误:在安装包前,先在R里设置编译选项,让编译器不把警告当成错误处理:

    Sys.setenv(CXXFLAGS = "-Wno-error=format")
    install.packages("vroom")
    

    这个设置只在当前R会话生效,安装完包后会自动恢复默认规则。

  • 更新cpp11包:问题根源是旧版本cpp11和R4.4不兼容,先更新cpp11再装目标包:

    # 如果更新cpp11时也报错,先执行上面的Sys.setenv命令
    install.packages("cpp11")
    install.packages("vroom")
    
  • 检查系统编译器版本:Ubuntu22.04默认的gcc-11完全适配R4.4,如果你手动换过编译器版本,切回默认版本试试:

    sudo update-alternatives --config gcc
    sudo update-alternatives --config g++
    
  • 清理旧包缓存后重装:删除残留的旧包文件,再重新安装:

    remove.packages(c("cpp11", "vroom"))
    # 清理下载缓存
    unlink(file.path(Sys.getenv("HOME"), ".cache", "R", "pkgdownload"), recursive = TRUE)
    install.packages("cpp11")
    install.packages("vroom")
    

原因说明

R4.4默认开启了-Werror=format编译选项,会把格式匹配类的警告直接转为错误。而旧版本的cpp11包代码里存在格式字符串和参数类型不匹配的问题,触发了这些警告,最终导致编译失败。更新cpp11到最新版本就能从根源解决这个问题,临时关闭警告转错误是应急的快速解决办法。

内容的提问来源于stack exchange,提问作者Alaiis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:10:18