【问题标题】:libxml-ruby failed to build native extensionslibxml-ruby 无法构建原生扩展
【发布时间】:2016-09-25 20:00:29
【问题描述】:

我在 El Capitan 上使用 ruby​​ 2.1.10 并尝试安装 libxml-ruby -v '2.7.0'。

当我运行 gem install libxml-ruby -v '2.7.0 时,我明白了

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

    /Users/stuartpearman/.rvm/rubies/ruby-2.1.10/bin/ruby -r ./siteconf20160527-15602-1pq16mj.rb extconf.rb
checking for socket() in -lsocket... no
checking for gethostbyname() in -lnsl... no
checking for atan() in -lm... yes
checking for inflate() in -lz... yes
checking for iconv_open() in -liconv... yes
checking for xmlParseDoc() in -lxml2... yes
checking for libxml/xmlversion.h... yes
checking for rb_io_bufwrite() in ruby/io.h... yes
creating extconf.h
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling libxml.c
compiling ruby_xml.c
ruby_xml.c:612:23: warning: assigning to 'const char *' from 'xmlChar *' (aka 'unsigned char *') converts between pointers to integer types with different sign [-Wpointer-sign]
  xmlTreeIndentString = xmlStrdup((xmlChar *)StringValuePtr(string));
                      ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
compiling ruby_xml_attr.c
compiling ruby_xml_attr_decl.c
ruby_xml_attr_decl.c:57:53: warning: passing 'const xmlChar *' (aka 'const unsigned char *') to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
    return rxml_new_cstr((const char*) xattr->name, xattr->doc->encoding);
                                                    ^~~~~~~~~~~~~~~~~~~~
./ruby_xml_encoding.h:11:51: note: passing argument to parameter 'xencoding' here
VALUE rxml_new_cstr(const char* xstr, const char* xencoding);
                                                  ^

完整的错误大约是 600 行,但大致相同。

我在互联网上搜索了解决方案并尝试了许多不同的方法,但都没有运气。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby osx-elcapitan


    【解决方案1】:

    我用sudo apt-get install -y libxml2-dev 安装了libxml2-dev

    然后gem i libxml-ruby 工作了。

    【讨论】:

      【解决方案2】:

      安装最新版本的 libxml-ruby 并立即运行。

      gem install libxml-ruby
      

      【讨论】:

      • 我也没有安装最新版本
      • 请安装 libiconv 和 iconv 和 lsocket?这个包丢失了
      • iconv 安装失败,我能够安装 libiconv,根据我的阅读,您不应该在 mac 上安装 -lsocket
      【解决方案3】:

      问题是我的 Mac 上没有安装一些必要的实用程序。

      我通过运行一些 brew 安装解决了这个问题:

      brew install libxml2 libxslt
      

      brew install coreutils
      

      安装coreutils 后,我遇到的很多问题神奇地消失了。

      另外,在安装 Nokogiri 时,我不得不做一些非常接近此的事情:

      gem install nokogiri --use-system-libraries -- --with-ldflags
      

      虽然我不记得我使用的确切选项

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-27
        • 2010-09-07
        • 1970-01-01
        • 2015-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        相关资源
        最近更新 更多