web-dev-qa-db-ja.com

OS X ElCapitanにthriftgemをインストールできません

OSX El Capitanのアップグレード後にthiftgemをインストールしようとしています:

    $ gem install thrift
    Building native extensions.  This could take a while...
    ERROR:  Error installing thrift:
        ERROR: Failed to build gem native extension.

        /Users/foo/.rvm/rubies/Ruby-2.1.4/bin/Ruby -r ./siteconf20160402-32256-7dzqel.rb extconf.rb
    checking for strlcpy() in string.h... yes
    creating Makefile

    make "DESTDIR=" clean

    make "DESTDIR="
    compiling binary_protocol_accelerated.c
    compiling bytes.c
    compiling compact_protocol.c
    compact_protocol.c:442:41: error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
        rb_exc_raise(get_protocol_exception(INT2FIX(-1), rb_str_new2(buf)));
                                            ^~~~~~~~~~~

コンパイルがcompact_protocol.c:442:41で失敗します:エラー:負の符号付き値のシフトが定義されていません[-Werror、-Wshift-negative-value]

20
Anton

私はあなたのための解決策を持っています!うまくいけば。

先日、これと同じ問題がありました。

問題は、ElCapitanにバンドルされているclangコンパイラにあります。それは他の問題を台無しにすることは確かですが、これは私が多くの問題を抱えていた1つのポイントです。

次のコマンドを実行してみて、どうなるか教えてください!

gem install thrift -- --with-cppflags=\"-D_FORTIFY_SOURCE=0 -Wno-shift-negative-value\"
61
noname

二重引用符をエスケープする必要があります。

$ bundle config build.thrift "--with-cppflags = \"-D_FORTIFY_SOURCE = 0 -Wno-shift-negative-value\""

$ cat〜/.bundle/config

BUNDLE_BUILD__THRIFT:-with-cppflags = "-D_FORTIFY_SOURCE = 0 -Wno-shift-negative-value"

17