Mac(Monterey)安装Ruby用于Github Pages编译失败求助
解决macOS 12.7上Ruby 3.1.3编译时的
_coroutine_transfer链接错误 针对你在2015款Intel MacBook Pro(macOS 12.7)上安装Ruby 3.1.3遇到的链接错误,以下是几个可行的解决方案:
1. 强制链接系统libunwind库
编译Ruby时指定系统libunwind的路径,这个库包含缺失的_coroutine_transfer符号:
- 使用rbenv安装:
RUBY_CONFIGURE_OPTS="--with-libunwind-dir=/usr" rbenv install 3.1.3 - 使用ruby-install安装:
ruby-install 3.1.3 -- --with-libunwind-dir=/usr
2. 补全依赖库后重新编译
先更新Homebrew并安装Ruby编译所需的依赖包:
brew update brew install openssl@1.1 readline libyaml libffi
再通过指定依赖路径安装Ruby:
RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline) --with-libyaml-dir=$(brew --prefix libyaml) --with-libffi-dir=$(brew --prefix libffi) --with-libunwind-dir=/usr" rbenv install 3.1.3
3. 尝试Ruby 3.1系列的更新版本
Ruby 3.1.3存在部分macOS编译兼容性问题,升级到同系列的修复版本(如3.1.5)可能直接解决问题:
rbenv install 3.1.5
4. 清空干扰性编译环境变量
如果你的环境中设置了CFLAGS或LDFLAGS等可能干扰编译的变量,临时清空后再尝试安装:
CFLAGS="" LDFLAGS="" rbenv install 3.1.3
错误原因说明
_coroutine_transfer是Ruby Fiber协程实现依赖的libunwind库函数,在macOS 12.7的命令行工具环境下,编译器默认可能未正确链接系统libunwind库,通过显式指定路径可以修复符号缺失问题。
内容的提问来源于stack exchange,提问作者matthewdgroves
相关产品推荐
相关产品推荐

