Mac OS Monterey 12.3.1下bundle install安装mini_racer报错
问题描述
在Mac OS Monterey 12.3.1系统中执行bundle install时,mini_racer(0.6.2)安装失败,Bundler终止运行,核心报错信息:
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/ruby.h:2602:20: note: expanded from macro 'rb_funcall' rb_funcallv(recv, mid, \ ^~~ 60 warnings generated. linking shared-object mini_racer_extension.bundle clang: error: no such file or directory: '/Users/mahdi/.gem/gems/libv8-node-16.10.0.0-x86_64-darwin/vendor/v8/universal-darwin/libv8/obj/libv8_monolith.a' make: *** [mini_racer_extension.bundle] Error 1 make failed, exit code 2
后续尝试直接执行gem install mini_racer、在Gemfile中明确指定mini_racer版本号,均出现相同的原生扩展构建失败问题,无法解决。
解决方案
该报错是mini_racer 0.6.2版本在MacOS 12.x系统下的已知路径识别bug:编译时默认查找universal通用架构目录下的libv8静态库,但依赖的libv8-node预编译包实际把文件存放在对应芯片架构的专属目录下,最终触发文件不存在错误。按以下步骤操作即可修复:
- 先清理本地安装失败的残留包
gem uninstall mini_racer gem uninstall libv8-node
执行时如果提示确认删除,输入y回车即可。
- 单独安装对应版本的libv8-node,指定匹配本机芯片的架构参数
- Intel芯片Mac执行:
gem install libv8-node -v 16.10.0.0 -- --with-cxxflags=-arch x86_64 --with-ldflags=-arch x86_64- M系列(Apple Silicon)芯片Mac执行:
gem install libv8-node -v 16.10.0.0 -- --with-cxxflags=-arch arm64 --with-ldflags=-arch arm64 - 创建编译时查找的目标目录,将已安装的libv8静态库软链到对应路径
- Intel芯片Mac执行:
mkdir -p ~/.gem/gems/libv8-node-16.10.0.0-x86_64-darwin/vendor/v8/universal-darwin/libv8/obj ln -s ~/.gem/gems/libv8-node-16.10.0.0-x86_64-darwin/vendor/v8/x86_64-darwin/libv8/obj/libv8_monolith.a ~/.gem/gems/libv8-node-16.10.0.0-x86_64-darwin/vendor/v8/universal-darwin/libv8/obj/libv8_monolith.a- Apple Silicon芯片Mac执行:
mkdir -p ~/.gem/gems/libv8-node-16.10.0.0-arm64-darwin/vendor/v8/universal-darwin/libv8/obj ln -s ~/.gem/gems/libv8-node-16.10.0.0-arm64-darwin/vendor/v8/arm64-darwin/libv8/obj/libv8_monolith.a ~/.gem/gems/libv8-node-16.10.0.0-arm64-darwin/vendor/v8/universal-darwin/libv8/obj/libv8_monolith.a - 重新执行安装命令
bundle install # 若仅需单独安装mini_racer,可执行 gem install mini_racer -v 0.6.2
如果不想手动调整路径,也可以直接将mini_racer升级到0.6.3及以上版本,高版本已经修复了该MacOS路径识别问题,无需额外配置即可正常安装。
内容的提问来源于stack exchange,提问作者Mahdi Morafah
相关产品推荐
相关产品推荐

