我正在尝试安装一个libxml-ruby
gem来构建本机扩展。我已将PKG_CONFIG_PATH
设置为libxml2的正确位置,并使pkg-config
可以看到它:
$ pkg-config --list-all | grep -i xml
libxml-2.0 libXML - libXML library version2.
不幸的是,宝石建造过程没有:
$ gem install libxml-ruby
...
checking for libxml/xmlversion.h in /opt/include/libxml2,/opt/local/include/libxml2,/usr/local/include/libxml2,/usr/include/libxml2... no
*** extconf.rb failed ***
...
extconf failure: need libxml2.
路径列表虽然不包含预期的位置:
$ pkg-config --cflags libxml-2.0
-I/usr/local/Cellar/libxml2/2.9.8/include/libxml2
为什么pkg-config
设置在这里会被忽略/如何使gem build尊重它?
答案 0 :(得分:0)
如果我们查看如何为{strong> libxml-ruby 实现extconf.rb,它将无法在 find_header()的预定义位置中找到标头。但是:
Install the library or try one of the following options to extconf.rb: --with-xml2-config=/path/to/xml2-config --with-xml2-dir=/path/to/libxml2 --with-xml2-lib=/path/to/libxml2/lib --with-xml2-include=/path/to/libxml2/include
尝试:
gem install libxml-ruby -- --with-xml2-dir=/usr/local/Cellar/libxml2/2.9.8 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.8/lib --with-xml2-include=/usr/local/Cellar/libxml2/2.9.8/include/libxml2
因此,对于软件包安装-makefile由gem的extconf.rb构建。它可以使用 pkg-config 或 dir_config 或两者同时使用;如果是这种宝石-它是dir_config,它是使用命令行选项设置的。