【问题标题】:Cannot build gem native extension on El Capitan - fails at lstdc++无法在 El Capitan 上构建 gem 原生扩展 - 在 lstdc++ 上失败
【发布时间】:2016-10-20 07:48:10
【问题描述】:

过去一个小时我一直在互联网上搜寻任何解决方案,但到目前为止都空手而归……

我正在尝试安装一个名为 taglib-ruby 的 gem,它依赖于一个 c++ 编译器(假设它被 gcc 和 Xcode 命令行工具覆盖)和我使用安装的 taglib(一个 C++ 库)自制。但是,它似乎并没有尝试包含它,因为它无法找到 lstdc++。

我正在尝试在 OSX El Capitan (10.11) 上执行此操作。

谁能告诉我这个依赖是什么以及我如何安装它?

请看下面的控制台输出:

$ gem install taglib-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing taglib-ruby:
    ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby -r ./siteconf20160618-66149-xswlyl.rb extconf.rb
checking for main() in -lstdc++... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby
    --with-tag-dir
    --without-tag-dir
    --with-tag-include
    --without-tag-include=${tag-dir}/include
    --with-tag-lib
    --without-tag-lib=${tag-dir}/lib
    --with-stdc++lib
    --without-stdc++lib
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:461:in `try_link0'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:476:in `try_link'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:619:in `try_func'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:845:in `block in have_library'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:840:in `have_library'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/taglib-ruby-0.7.1/ext/extconf_common.rb:28:in `<top (required)>'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:54:in `require'
    from extconf.rb:2:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/taglib-ruby-0.7.1 for inspection.
Results logged to /usr/local/rvm/gems/ruby-1.9.3-p194/extensions/x86_64-darwin-11/1.9.1/taglib-ruby-0.7.1/gem_make.out

【问题讨论】:

    标签: c++ ruby homebrew osx-elcapitan


    【解决方案1】:

    错误消息中包含以下内容:

    /usr/local/rvm/rubies/ruby-1.9.3-p194/
    

    这是一个相当老的 ruby​​ 版本。使用 rvm 安装最新版本的 ruby​​:

    $ rvm install 2.3.1
    

    然后尝试再次安装 gem。

    如果您想在打开终端时将该版本的 ruby​​ 设为默认版本:

    $ rvm --default use 2.3.1
    

    编辑:嗯...在 OSX 10.10.5 上,我能够执行 $ brew install taglib,然后在 ruby​​-1.9.3-p194 和 ruby​​-2.3.0 上成功安装 gem $ gem install taglib-ruby。我安装了完整的 Xcode(Xcode 7.2.1)。我想知道您的 Xcode 命令行工具是否与您的 ruby​​ 版本一样严重过时?你可以试试:

    $ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
    

    获取 Xcode 命令行工具的版本。

    您可能需要更新 rvm、ruby、homebrew 和 Xcode 命令行工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 2014-12-04
      • 2013-11-03
      相关资源
      最近更新 更多