Ruby 如何在MacOS Catalina上使用gcc安装Nokogiri

Ruby 如何在MacOS Catalina上使用gcc安装Nokogiri,ruby,gcc,nokogiri,Ruby,Gcc,Nokogiri,我正在尝试在MacOS Catalina 10.15.1系统上安装Nokogiri gem install nokogiri 日志文件中的错误为: "gcc -o conftest -I/Users/shairyar/.rvm/rubies/ruby-2.6.3/include/ruby-2.6.0/x86_64-darwin18 -I/Users/shairyar/.rvm/rubies/ruby-2.6.3/include/ruby-2.6.0/ruby/backward -I/Users

我正在尝试在MacOS Catalina 10.15.1系统上安装Nokogiri

gem install nokogiri
日志文件中的错误为:

"gcc -o conftest -I/Users/shairyar/.rvm/rubies/ruby-2.6.3/include/ruby-2.6.0/x86_64-darwin18 -I/Users/shairyar/.rvm/rubies/ruby-2.6.3/include/ruby-2.6.0/ruby/backward -I/Users/shairyar/.rvm/rubies/ruby-2.6.3/include/ruby-2.6.0 -I. -I/usr/local/opt/readline/include -I/usr/local/opt/libyaml/include -I/usr/local/opt/readline/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl@1.1/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT   -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wdivision-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wmissing-noreturn -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wextra-tokens  -fno-common -pipe  -I /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2 conftest.c  -L. -L/Users/shairyar/.rvm/rubies/ruby-2.6.3/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib -L. -L/usr/local/opt/readline/lib -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl@1.1/lib     -lruby.2.6    "
    gcc: error: unrecognized command line option '-Wdivision-by-zero'; did you mean '-Wdiv-by-zero'?
    gcc: error: unrecognized command line option '-Wshorten-64-to-32'
    gcc: error: unrecognized command line option '-Wextra-tokens'; did you mean '-Wextra-semi'?
    checked program was:
    /* begin */
    1: #include "ruby.h"
    2:
    3: int main(int argc, char **argv)
    4: {
    5:   return 0;
    6: }
    /* end */
我一直在使用
brew install gcc
brew link gcc
搜索并尝试安装gcc,但这没有帮助

以下是我的gcc版本:

$which gcc
/usr/local/bin/gcc

$gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-apple-darwin19/9.2.0/lto-wrapper
Target: x86_64-apple-darwin19
Configured with: ../gcc-9.2.0/configure --build=x86_64-apple-darwin19 --disable-nls --enable-checking=release --with-system-zlib --disable-multilib --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk --enable-languages=c,c++,fortran --with-gmp=/usr/local --with-mpc=/usr/local --with-mpfr=/usr/local
Thread model: posix
gcc version 9.2.0 (GCC)
我还尝试了以下不起作用的方法:

  • gem安装nokogiri--使用系统库
  • CC=llvm gcc gem安装nokogiri

  • 为了解决这个问题,我删除了我安装的gcc,它位于
    /usr/local/bin/gcc
    ,这似乎解决了我的问题。当我执行命令时

    which gcc
    
    我得到的结果是:

    /usr/local/bin/gcc
    

    我需要苹果安装在
    /usr/bin/gcc

    的那个,你试过了吗@Casper是的,我有
    CC=llvm gcc gem install nokogiri
    没有工作,因为我没有
    apple-gcc42
    所以我不需要卸载它如果你完全卸载gcc怎么办?如果没有办法奏效,那么也许可以在nokogiri回购协议上公开一个问题。当然,如果你不害怕修补的话,你也可以尝试自己修复它(git克隆repo,修复命令行开关,或者找出为什么它在Catalina上为gcc错误地设置了它们)。感谢@Casper为你安装的tipHave?当我使用本机代码安装任何东西时,gem总是使用它的命令行工具。