代码之家  ›  专栏  ›  技术社区  ›  Mihai Damian

无法在OS X上安装mysqlgem

  •  19
  • Mihai Damian  · 技术社区  · 11 年前

    我正在做一个

    sudogem安装mysql

    在OS X上安装mysqlgem。此操作失败,输出如下:

    正在生成本机扩展。这可能需要一段时间。。。

    错误:安装mysql时出错:

    错误:未能生成gem本机扩展。

    /系统/库/框架/Ruby.framework/Versions/2.0/usr/bin/Ruby extconf.rb

    正在检查mysql_ssl_set()。。。对

    正在检查rb_str_set_len()。。。对

    正在检查rb_thread_start_timer()。。。不

    正在检查mysql.h…是

    创建Makefile

    使“DESTDIR=”干净

    使“DESTDIR=”

    编译mysql.c

    链接共享对象mysql/mysql_api.bundle

    clang:error:未知参数:“-multiply_definedsuppress”[-Wunused命令行->将来的参数硬错误]

    叮当:注意:这将是一个严重错误(不能降级为警告)

    制造商: * [mysql_api.bundle]错误1

    生成失败,退出代码2

    Gem文件仍将安装在/Library/Ruby/Gems/2.0.0/Gems/mysql-2.9.1中以供检查。

    结果记录到/Library/Ruby/Gems/2.0.0/extensions/universal-darwin-13/2.0.0/mysql-2.9.1/gem_make.out

    知道是什么原因导致的吗?我已经用自制程序安装了mysql,如果这有区别的话。

    4 回复  |  直到 11 年前
        1
  •  61
  •   user3409217    11 年前

    From Apple's Xcode/Clang release notes:

    Xcode 5.1中的Apple LLVM编译器将无法识别的命令行选项视为错误。在构建Python本机扩展和RubyGems(当前指定了一些无效的编译器选项)时,已经发现了这个问题。 需要更改使用无效编译器选项的项目以删除这些选项。帮助?为了简化转换,编译器将暂时接受将错误降级为警告的选项:

    -Wno-error=unused-command-line-argument-hard-error-in-future

    ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

        2
  •  7
  •   Tim Burke    11 年前

    苹果的rbconfig.rb似乎有问题:

    $ grep -n DLDFLAGS /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb
    82:  CONFIG["LIBRUBY_DLDFLAGS"] = "-undefineddynamic_lookup -multiply_definedsuppress -install_name $(libdir)/$(LIBRUBY_SO) -current_version $(MAJOR).$(MINOR).$(TEENY) -compatibility_version $(ruby_version)  $(XLDFLAGS)"
    84:  CONFIG["EXTDLDFLAGS"] = ""
    125:  CONFIG["DLDFLAGS"] = "-undefineddynamic_lookup -multiply_definedsuppress"
    

    删除 -multiply_definedsuppress 应允许其安装。

        3
  •  1
  •   Community CDub    8 年前
        4
  •  1
  •   Maciej Trybiło    11 年前

    以上答案正确。最简单的修复方法是在机器上重建ruby。Gem扩展在构建时使用ruby构建配置,如果您在Xcode 5.1之前构建了ruby,那么它的构建配置包含有问题的标志。

    这应该可以修复所有受影响的宝石。