是的,这是关于在Ruby on Rails中安装mysql2 gem的另一个问题。但这是一个我在另一个问题中没有找到的错误。
我在OS X Mountain Lion上安装了64位MySQL和RVM。当试图安装mysql2 gem时,我不断从make
获得关于在mysql2_ext.h中重新定义ushort
和uint
的错误。我在几个不同的地方发现了这个文件(显然是缓存的,因为当我重新运行gem install mysql2
命令时,更改文件没有任何作用),并在其中找到了这些行:
#ifndef HAVE_UINT
#define HAVE_UINT
typedef unsigned short ushort;
typedef unsigned int uint;
#endif
它确实试图重新定义ushort
和uint
,即使它仍然有它们。我如何告诉它这些符号已经被定义了?
结果是有一种方法来指定您的CFLAGS来强制它识别HAVE_UINT定义。不是这样的(显然gem安装会设法忽略这样设置的环境变量):
sudo env CFLAGS="-DHAVE_UINT" gem install mysql2
请参阅下面的问题:
gem install mysql2 -- --with-cflags="-DHAVE_UINT"
它成功了!