MacOS 14.0环境下执行sudo gem install ffi安装失败求助
ffi 与 macOS 14.0 兼容性及安装失败解决方案
问题信息
安装命令
sudo gem install ffi
错误信息
ld: warning: -multiply_defined is obsolete ld: warning: search path '/AppleInternal/Library/BuildRoots/98ed8ad3-3356-11ee-9b53-aead88ae2785/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.Internal.sdk/usr/local/lib' not found ld: archive member '/' not a mach-o file in '/Library/Ruby/Gems/2.6.0/gems/ffi-1.16.3/ext/ffi_c/libffi-universal-darwin23/.libs/libffi_convenience.a' clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [ffi_c.bundle] Error 1
环境信息
Ruby: 2.6.0 MacOS: 14.0 Xcode: 15.0.1
兼容性说明及解决方法
ffi 并非与 macOS 14.0 完全不兼容,你遇到的报错是因为旧版本 ffi(1.16.3)与 Xcode 15.0.1 的链接器行为不匹配,同时系统自带的 Ruby 2.6.0 版本较老,在新系统环境下编译扩展易出现问题。
可尝试以下解决方式:
- 升级 ffi 版本:指定安装适配了 macOS 14 和 Xcode 15 的更新版本,比如 1.17.x 及以上:
sudo gem install ffi -v 1.17.0 - 使用 Ruby 版本管理器:通过 rbenv 或 rvm 安装较新的 Ruby 版本(如 3.2+),新版本对新系统兼容性更好,再安装 ffi:
# 示例:用 rbenv 安装 Ruby 3.2.2 rbenv install 3.2.2 rbenv global 3.2.2 gem install ffi - 指定 SDK 路径:若坚持使用系统 Ruby,可手动指定 macOS SDK 路径,避免链接器查找内部路径失败:
sudo SDKROOT=$(xcrun --show-sdk-path) gem install ffi
内容的提问来源于stack exchange,提问作者arderbud
相关产品推荐
相关产品推荐

