安装mysql2 gem - HAVE_UINT(ushort,uint type redefinition errors)

时间:2013-04-08 20:54:29

标签: ruby-on-rails ruby rvm mysql2

是的,这是关于安装mysql2 gem以在Ruby on Rails中使用的另一个问题。但这是我在其他问题中未能找到的错误。

我在OS X Mountain Lion上安装了64位MySQL和RVM。在尝试安装mysql2 gem时,我不断收到make关于在mysql2_ext.h中重新定义ushortuint的错误。我发现该文件位于几个不同的地方(显然是缓存的,因为当我重新编写gem install mysql2命令时更改文件没有做任何事情)并在其中找到了这些行:

#ifndef HAVE_UINT
#define HAVE_UINT
typedef unsigned short    ushort;
typedef unsigned int    uint;
#endif

确实尝试重新定义ushortuint,即使它仍然有它们。我如何告诉它已经定义了符号?

1 个答案:

答案 0 :(得分:1)

事实证明,有一种方法可以指定CFLAGS以强制它识别HAVE_UINT定义。它不是这个(显然gem安装设法忽略以这种方式设置的环境变量):

  

sudo env CFLAGS =“ - DHAVE_UINT”gem install mysql2

有关如何执行此操作,请参阅this question

  

gem install mysql2 - --with-cflags = \“ - DHAVE_UINT \”

它有效!