mysql.h不见了......(Ruby on Rails, OSX)

问题描述 投票:14回答:4

我试了好几个办法......都没有用......我只是想把mysql2安装成一个gem。我的mysql是工作,但每次我的系统说,mysql.h丢失......。有人有一个想法吗?这是非常令人沮丧的,现在... ...

我用的是osx 10.8.3,ruby 1.9.3,rails 3.2.13和home-brew。

    gem install mysql2 -v '0.3.11'
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

        /Users/gadreel/.rvm/rubies/ruby-1.9.3-p429/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/gadreel/.rvm/rubies/ruby-1.9.3-p429/bin/ruby
    --with-mysql-config
    --without-mysql-config

    file `which mysql`
    /usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
mysql ruby-on-rails ruby macos gem
4个回答
4
投票

使用包管理器,如 自酿MacPorts 使得修复这个问题变得相当直接。直接来自Oracle的MySQL二进制发行版和与OS X本身捆绑的发行版都没有开发头文件,其中的 mysql.h 是其中之一。

Homebrew会这样解决。

brew install mysql

MacPorts也很类似

sudo port install mysql

这两个软件都会安装库,一个命令行客户端 和相关的库的开发头文件。启用服务器是可选的。

作为另一种选择,你可以得到源代码 苹果直供 并以任何你认为合适的方式安装。

一般来说,Homebrew是最好的方式。


46
投票

我在Mountain Lion Rails的安装中(使用Homebrew和RVM)所做的工作是编辑usrlocalCellarmysql5.XX.XXbinmysql_config,然后去掉 -Wno-null-conversion -Wno-unused-private-field 从 cxflags 和 cxflags 选项中获得如下信息。

Before:

cflags="-I$pkgincludedir  -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cxxflags="-I$pkgincludedir  -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!

After:

cflags="-I$pkgincludedir  -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cxxflags="-I$pkgincludedir  -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!

之后,gem安装mysql2的过程中,没有出现任何问题

注意:这可能是由于5.6.10之后引入的mysql_config的变化。http:/bugs.mysql.combug.php?id=69645


0
投票

安装一个 gem 有时会涉及到编译源代码。 在这种情况下,MySQL gem需要通过编译C代码来创建ruby接口--你很可能需要安装MySQL开发文件。

(之前错过了OSX的参考资料)


0
投票

你需要安装mysql的开发头文件,使用brew你可能需要安装一个比8更低的版本,因为一些头文件从这个发行版中被移除。例如 my_global.h 已被删除,所以如果你的代码使用这个头,你将被迫安装一个以前的版本,然后8。

头文件依赖性

我们已经开始清理头文件的依赖性,也就是 "包含你所使用的",以及重新组织头文件以去除构建的依赖性。我们修正了模棱两可的包含路径,现在几乎所有的路径都应该从根目录开始。在例如my_global.h消失后,增量性增加了很多,sql_class.h的重量也减少了不少。运送的客户端头文件自成体系,更加合理。例如,客户端头文件现在是独立于平台的(32位和64位Linux之间没有区别)。

brew install [email protected] [email protected]
© www.soinside.com 2019 - 2024. All rights reserved.