我刚刚买了一台新的MacBook Pro(显然是w/ML)。我要做的第一件事是安装开发工具。我用rvm安装了Ruby,也安装了Homebrew。我不得不下载XCode命令行工具。
$ gcc -v
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.11~67/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~67/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
我能够很好地安装mongo
gem,但是当我尝试安装nokogiri
时,出现以下错误:
$ gem install nokogiri
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/Users/johnsmith/.rvm/rubies/ruby-1.9.3-p327/bin/ruby extconf.rb
checking for libxml/parser.h... *** 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.
在该消息之后,它列出了一大堆配置选项,然后说:
/Users/johnsmith/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/mkmf.rb:369:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
看来我有开发工具,所以我无法找出问题所在。有什么想法吗?
我不得不环顾四周,但我在 github 找到了解决方案:https://github.com/sparklemotion/nokogiri/issues/442#issuecomment-7978408
libxml2 丢失。
我发现需要额外的步骤来解决Homebrew的上述问题 0.9 在 Mac OS X 10.8 Mountain Lion 上,即创建一个"/usr/bin/gcc-4.2"链接:
brew install libxml2 libxslt
brew link libxml2 libxslt
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install
sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
在这种情况下,您需要 libxml 的开发标头,这些标头未作为编译器工具的一部分提供。通常,您需要安装Homebrew或MacPorts之一来帮助安装这些依赖项。
如果您不熟悉,这里的提示很难在噪音中发现,但是:
checking for libxml/parser.h... *** extconf.rb failed ***
.h
文件随开发包一起提供,并且是针对这些库编译扩展所必需的。