3

私のシステムは osx 10.8.4 で、gem install zookeeper -v '1.4.4'常に次のエラーが発生します。

src/hashtable/hashtable_itr.c:42:1: error: redefinition of a 'extern inline' function 'hashtable_iterator_key' is not supported in C99 mode hashtable_iterator_key(struct hashtable_itr *i) ^ src/hashtable/hashtable_itr.h:36:1: note: previous definition is here hashtable_iterator_key(struct hashtable_itr *i) ^ src/hashtable/hashtable_itr.c:46:1: error: redefinition of a 'extern inline' function 'hashtable_iterator_value' is not supported in C99 mode hashtable_iterator_value(struct hashtable_itr *i) ^ src/hashtable/hashtable_itr.h:45:1: note: previous definition is here hashtable_iterator_value(struct hashtable_itr *i) ^

たまたま理由を知っている人はいますか?ありがとう!

PSgem install zookeeperは問題なく Zookeeper 1.4.6 をインストールできました。

更新:CC=gcc-4.6 gem install zookeeper -v '1.4.4'私の問題を解決しました

4

1 に答える 1

4

これを回答済みの質問にするために、「適切な」回答を提供したいと思います。

Zookeeper は gcc 上に構築することを意図しているようです。

OS X以上は、Xcode(バージョン4.x以降)が最終的にgccサポートを完全に廃止するまで、デフォルトとしてgccの使用を停止したと述べました。

彼らは、clang フロントエンドと組み合わせて LLVM に切り替えました。

ソースをいじらずにその問題を回避する唯一の方法は、homebrew のような方法で gcc をインストールすることです。

brew install gcc47

それが完了したら、一致する CC (および/または CXX) 環境変数を提供することにより、ビルド/インストール プロセスにその gcc を使用するように指示できます。

CC=gcc-4.7 CXX=g++-4.7

以前に gcc4.6 がインストールされていたため、質問の更新が機能します。これは、OS X / Xcode の最近のインストールには当てはまらない可能性があるため、私の詳細な回答です。

これらの手順は一般的なものであり、「標準」パッケージが OS X / Xcode で適切にビルドまたはインストールされない場合にいつでも使用できます。指定された環境変数をインストール/構成命令の先頭に追加するだけです。

あなたの例については、次のようになります。

CC=gcc-4.7 CXX=g++-4.7 gem install zookeeper -v '1.4.4'

ノート; 仕事を成し遂げるためのより侵襲性の低い方法がある可能性が最も高いですが、それ以上の試行錯誤をしなくても、上記は通常、clang / gcc の非互換性に関連するあらゆる種類の奇妙な結果に対して仕事をします。

于 2013-11-12T21:54:10.853 に答える