Ventura系统安装therubyracer报错:无法获取c++编译器版本字符串
解决
gem install therubyracer安装失败问题 报错信息
Fetching therubyracer-0.12.0.gem Building native extensions. This could take a while... ERROR: Error installing therubyracer: ERROR: Failed to build gem native extension. current directory: /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8 /Users/sidmallik/.rvm/rubies/ruby-2.6.6/bin/ruby -I /Users/sidmallik/.rvm/rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0 -r ./siteconf20230417-13868-1rqlxz3.rb extconf.rb creating Makefile /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/compiler.rb:44:in `version_string_of': Could not get version string of compiler c++ (RuntimeError) from /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/compiler.rb:32:in `type_of' from /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/compiler.rb:28:in `block in available_compilers' from /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/compiler.rb:28:in `map' from /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/compiler.rb:28:in `available_compilers' from /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/builder.rb:108:in `choose_compiler' from /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/builder.rb:16:in `initialize' from /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/location.rb:23:in `new' from /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19/ext/libv8/location.rb:23:in `install!' from extconf.rb:7:in `<main>' extconf failed, exit code 1 Gem files will remain installed in /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/gems/libv8-3.16.14.19 for inspection. Results logged to /Users/sidmallik/.rvm/gems/ruby-2.6.6@emailmarketing/extensions/x86_64-darwin-19/2.6.0/libv8-3.16.14.19/gem_make.out
已执行的前置操作
gem uninstall libv8brew install v8
环境信息
- 系统:Ventura
- Ruby版本:2.6.6(通过rvm管理)
解决方法
方法1:指定兼容编译器
旧版libv8无法识别Ventura自带的新版clang,需指定低版本兼容编译器:
- 安装llvm@11:
brew install llvm@11 - 设置环境变量指向该编译器:
export CC=/usr/local/opt/llvm@11/bin/clang export CXX=/usr/local/opt/llvm@11/bin/clang++ - 重新安装依赖:
gem install libv8 -v 3.16.14.19 -- --with-system-v8 gem install therubyracer -v 0.12.0
方法2:通过Bundler配置(适用于Gemfile项目)
- 安装对应版本的v8:
brew install v8@3.16 - 在Gemfile中添加:
gem 'libv8', '3.16.14.19', platforms: :ruby, require: false gem 'therubyracer', '0.12.0', platforms: :ruby - 配置bundler构建参数:
bundle config build.libv8 --with-system-v8 bundle config build.therubyracer --with-v8-dir=$(brew --prefix v8@3.16) bundle install
方法3:升级Ruby版本(可选)
Ruby 2.6.6与Ventura兼容性有限,升级到2.7+版本可规避部分编译器兼容问题:
rvm install 2.7.8 rvm use 2.7.8@your_gemset gem install therubyracer
内容的提问来源于stack exchange,提问作者sid297
相关产品推荐
相关产品推荐

