我的系统是OSX10.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) ^
有没有人知道原因?谢谢!
做gem install zookeeper
可以安装动物园管理员1.4.6,没有问题。
更新:做CC=gcc-4.6 gem install zookeeper -v '1.4.4'
解决了我的问题
发布于 2013-11-12 13:54:10
为了使这个问题得到解答,我想提供一个“适当”的答案。
动物园管理员似乎是要建立在gcc的基础上。
OS或更高版本的Xcode (从4.x版本开始)停止使用gcc作为默认设置,直到他们最终完全放弃gcc的支持。
他们切换到LLVM与clang前端相结合。
解决这个问题的唯一方法就是通过类似于自制的东西来安装gcc --例如;
brew install gcc47
一旦完成,您可以通过提供匹配的CC (和/或CXX)环境变量来指示您的构建/安装过程使用gcc;
CC=gcc-4.7 CXX=g++-4.7
对您的问题的更新是有效的,因为您以前安装了gcc4.6。对于最近安装的OS / Xcode来说,情况可能并非如此,因此我的回答很详细。
当“标准”包没有在OS /Xcode上正确构建或安装时,这些步骤应该是通用的,并且可以使用;只需在安装/配置指令前面加上给定的环境变量即可。
至于你的例子,那就是:
CC=gcc-4.7 CXX=g++-4.7 gem install zookeeper -v '1.4.4'
注意:最有可能的是有较少的侵略性的方法来完成工作,但是没有进一步的尝试和错误,上面提到的通常是针对与clang / gcc不兼容有关的各种奇怪的结果。
https://stackoverflow.com/questions/18775968
复制