MacOS Big Sur安装Rails报Failed to build gem native extension怎么办
Mac OS Big Sur 安装Rails报「Failed to build native extension」解决步骤
报错核心原因:你当前使用的是系统内置的Ruby 2.6.3,该版本受系统权限保护,且仅安装Xcode未正确配置命令行工具和编译参数,就会导致原生扩展编译失败。
第一步:配置Xcode命令行工具
仅安装Xcode.app不会自动安装编译所需的命令行组件,执行以下命令安装并同意许可:xcode-select --install sudo xcodebuild -license accept执行完成后输入
xcode-select -p确认返回路径为/Applications/Xcode.app/Contents/Developer即可。第二步(推荐):替换系统内置Ruby
系统内置Ruby是为系统组件服务的,不建议直接用于开发环境安装gem,推荐通过rbenv安装用户级别的独立Ruby版本:- 先安装Homebrew包管理工具:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"- 安装rbenv和Ruby编译组件:
brew install rbenv ruby-build- 配置rbenv环境变量(以常用的zsh为例,bash的话将.zshrc替换为.bash_profile):
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc source ~/.zshrc- 安装稳定版Ruby并设置为全局默认:
rbenv install 3.2.2 rbenv global 3.2.2- 确认Ruby版本为用户安装的版本而非系统版本:
ruby -v返回
ruby 3.2.2即配置成功。第三步:安装Rails
此时直接执行安装命令即可,不要加sudo,加sudo会切换到系统Ruby环境导致权限问题:gem install rails
临时解决方案(不替换系统Ruby)
如果坚持使用系统自带的Ruby 2.6.3,可指定用户目录安装gem,同时给nio4r扩展添加编译参数:
gem install nio4r -- --with-cflags="-Wno-error=implicit-function-declaration" gem install --user-install rails
安装完成后将用户gem的bin目录添加到PATH环境变量即可正常调用rails命令。
内容的提问来源于stack exchange,提问作者Nikita
相关产品推荐
相关产品推荐

