安装R包(如DESeq2)时出现gcc-12错误求助
问题描述
执行BiocManager::install("DESeq2")时,依赖包(如sys、fastmap、askpass)下载正常,但编译安装阶段全部报错,核心错误为:
/bin/bash: /home/linuxbrew/.linuxbrew/bin/gcc-12: Bad address
直接执行gcc-12 --version也会触发相同错误。问题出现在brew upgrade之后,已升级到最新WSL内核(5.10.102.1),尝试brew postinstall gcc、brew reinstall gcc均失败,系统自带gcc(Ubuntu 9.3.0)正常,build-essential已是最新版本。
解决方案
方案1:重建Homebrew gcc符号链接
WSL中Homebrew的符号链接损坏常引发该错误,手动重建:- 查看gcc@12的实际安装目录:
ls -la /home/linuxbrew/.linuxbrew/Cellar/gcc@12/ - 替换下方
[版本号]为实际目录名,重建链接:ln -sf /home/linuxbrew/.linuxbrew/Cellar/gcc@12/[版本号]/bin/gcc-12 /home/linuxbrew/.linuxbrew/bin/gcc-12 ln -sf /home/linuxbrew/.linuxbrew/Cellar/gcc@12/[版本号]/bin/g++-12 /home/linuxbrew/.linuxbrew/bin/g++-12 - 测试
gcc-12 --version是否正常,再尝试安装DESeq2。
- 查看gcc@12的实际安装目录:
方案2:强制R使用系统gcc编译
绕开Homebrew的gcc问题,直接用系统自带编译器:- 临时生效(仅当前R会话):
Sys.setenv(CC = "/usr/bin/gcc", CXX = "/usr/bin/g++") BiocManager::install("DESeq2") - 永久生效:
创建或编辑~/.R/Makevars文件,添加:
保存后重启R再执行安装命令。CC=/usr/bin/gcc CXX=/usr/bin/g++ CXX11=/usr/bin/g++ CXX14=/usr/bin/g++ CXX17=/usr/bin/g++
- 临时生效(仅当前R会话):
方案3:修复WSL文件系统权限
权限异常可能导致Homebrew工具无法正常运行:sudo chown -R $(whoami):$(whoami) /home/linuxbrew/.linuxbrew brew doctor根据
brew doctor的提示修复其他问题,之后重试brew reinstall gcc@12。方案4:降级gcc版本
若最新版gcc@12在WSL中存在兼容性问题,可切换到稳定的旧版本:brew install gcc@11然后在R中指定使用gcc-11:
Sys.setenv(CC = "/home/linuxbrew/.linuxbrew/bin/gcc-11", CXX = "/home/linuxbrew/.linuxbrew/bin/g++-11") BiocManager::install("DESeq2")
内容的提问来源于stack exchange,提问作者ThePresident
相关产品推荐
相关产品推荐

