我正在尝试构建一些代码,但发现我需要首先更改configure.ac文件,因为它没有在正确的位置搜索ruby标头。今天是我看过config.ac文件的第一天,所以在挖掘它们并更改它们时一定会出现问题!但是,是的,我是这类事情的完全新手,如果这是一个愚蠢的问题,请道歉。
在我的系统上,ruby.h
文件位于/usr/include/ruby/ruby.h
,实际上在/usr/include/ruby.h
处有一个类似命名的文件。我承认我不知道哪一个是正确的,但无论哪种方式,我的配置脚本都找不到它。
这是我的configure.ac文件的一部分,应该找到正确的标题:
CPPFLAGS="$CPPFLAGS -I/usr/include/ruby"
AC_MSG_CHECKING([CPPFLAGS are $CPPFLAGS])
AC_CHECK_HEADER([ruby.h],
[AC_DEFINE(HAVE_RUBY_H, 1, [has ruby.h -- ruby-dev is installed] )],
[AC_MSG_ERROR([Sorry, you need ruby-dev (headers) installed])])
CPPFLAGS=$SAVE_CPPFLAGS
但这是我得到的输出:
checking ruby.h usability... no
checking ruby.h presence... no
checking for ruby.h... no
configure: error: Sorry, you need ruby-dev (headers) installed
在config.log
文件中,给出以下消息:
configure:13689: checking ruby.h usability
configure:13689: gcc -c -I/usr/include/ruby/ conftest.c >&5
In file included from conftest.c:69:0:
/usr/include/ruby/ruby.h:24:25: fatal error: ruby/config.h: No such file or directory
我不明白它正在寻找的config.h
文件到底是什么。
另外,我发现了类似的问题here,但我尝试了建议的修复(即在AC_CHECK_HEADER调用中指定路径),但没有任何效果。我还看到了这个问题here,这让我觉得我的问题可能是权限问题,但我仍然不知道日志所涉及的config.h
文件的目的。它无处可寻。
有什么想法吗?
答案 0 :(得分:0)
基本问题是看起来你的Ruby头文件安装不完整。 Autoconf探测很好(除了你通常不应该更改CPPFLAGS
中的configure.ac
,因为它是为用户保留的。)
这里真正的问题是您的ruby/config.h
文件发生了什么。这应该是普通Ruby开发文件安装的一部分。
值得注意的是,在Debian和Ubuntu上,已经为multiarch移动了一些头文件(以便可以同时安装软件包的多个体系结构),ruby/config.h
文件,因为它是架构 - 依赖,已被移动到子目录。在我的系统上,例如:
windlord:/usr/include/ruby-1.9.1> ls -R
.:
i486-linux/ ruby/ ruby.h
./i486-linux:
ruby/
./i486-linux/ruby:
config.h
./ruby:
backward/ dl.h io.h re.h st.h version.h
defines.h encoding.h missing.h regex.h subst.h vm.h
digest.h intern.h oniguruma.h ruby.h util.h
./ruby/backward:
classext.h rubyio.h rubysig.h st.h util.h
因此,如果您尝试使用不支持多字节的编译器而不知道要在/usr/include/i486-linux
目录中搜索,那么我会期待您收到的错误消息'使用Ruby的multiarch安装。这可能是问题吗?