macOS最新Brew环境下R包lmtest安装失败(emutls_w库未找到)
解决macOS下Brew最新版环境中安装R包(如lmtest)提示找不到emutls_w库的问题
这个问题的核心是Brew最新版的gcc默认启用了emutls(模拟线程本地存储)特性,但R的编译环境未适配该设置,导致链接阶段找不到对应库文件。以下是几种可行的解决方法:
方法一:临时指定编译选项安装单个R包
直接在R控制台中设置编译参数,关闭emutls后安装目标包:
Sys.setenv(CFLAGS="-fno-emutls", CXXFLAGS="-fno-emutls") install.packages("lmtest")
这种方式适合仅需安装少数包的场景,无需修改全局环境。
方法二:重新编译R以适配Brew的gcc
若后续要安装多个依赖编译的R包,建议让R本身适配当前gcc环境:
- 卸载现有通过Brew安装的R:
brew uninstall --force r - 设置编译环境变量并从源码编译安装R:
export CFLAGS="-fno-emutls" export CXXFLAGS="-fno-emutls" brew install r --build-from-source
编译完成后,后续安装所有R包无需再单独设置编译参数。
方法三:切换到Brew的旧版gcc
若不想修改编译参数,可降级到未强制启用emutls的旧版gcc:
- 安装gcc@11(或其他兼容版本):
brew install gcc@11 - 设置环境变量让R使用旧版gcc:
export CC="/usr/local/bin/gcc-11" export CXX="/usr/local/bin/g++-11" - 此时再安装R包或重新安装R即可正常完成。
注意事项
- 终端重启后,临时设置的环境变量会失效,若需持久生效,可将
export命令添加到~/.zshrc(zsh终端)或~/.bash_profile(bash终端)中。 - 其他依赖编译的R包(如car、plm等)遇到相同报错时,方法一的临时设置同样适用。
内容的提问来源于stack exchange,提问作者ivo Welch
相关产品推荐
相关产品推荐

