mysql – Ruby的has_header方法在哪里查找头文件?

前端之家收集整理的这篇文章主要介绍了mysql – Ruby的has_header方法在哪里查找头文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在CentOS 5.7机器上,我无法安装最新版本的mysql2 gem;它找不到errmsg.h:

/usr/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... no
checking for MysqL_query() in -lMysqLclient... yes
checking for MysqL.h... no
checking for MysqL/MysqL.h... yes
checking for errmsg.h... no
-----
errmsg.h is missing.  please check your installation of MysqL and try again.
-----
*** extconf.rb Failed ***

MysqL文件存在于/usr/include / MysqL中.服务器上存在旧版本的gem,因此必须在一个点上成功构建.

请注意,它在检查MysqL.h时失败,但在MysqL / MysqL.h上成功.但是,对于errmsg.h,它不会重复此操作.通过这个我猜它不是在看/usr/include,但我不确定.

我已经挖掘了extconf.rb源代码并发现它正在使用have_header方法来定位头文件.我调试了执行,发现它正在寻找“MysqL / errmsg.h”的相对路径.但我没有找到任何解释它如何将其扩展为绝对路径的文档.

哪里& has_header如何定位其头文件

最佳答案
我相信我找到了答案.

似乎has_header查看系统包含路径.如果未设置相关环境变量,则默认包含路径为/usr/local/include和/usr/include.

如果要手动设置它们,您可以执行以下操作:

export C_INCLUDE_PATH=/usr/include/MysqL/

即使您正在编译C程序,如果头文件是C文件,那也是如此.另一方面,如果你的头文件是C而不是C,你会这样做:

export CPLUS_INCLUDE_PATH=/usr/include/MysqL

当然,您找到了解决方法,即在extconf.rb中包含dir_config(‘MysqL’).这使您可以使用–with-MysqL-include选项并手动提供路径.

这是我的来源:http://www.network-theory.co.uk/docs/gccintro/gccintro_23.html

这是同一个问题的更一般版本(有答案):How to add a default include path for gcc in linux?

原文链接:https://www.f2er.com/mysql/433616.html

猜你在找的MySQL相关文章