首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Configure.ac AC_CHECK_HEADERS找不到ruby.h

Configure.ac AC_CHECK_HEADERS找不到ruby.h
EN

Stack Overflow用户
提问于 2013-03-12 06:15:17
回答 1查看 1.6K关注 0票数 1

我正在尝试构建一些代码,但是发现我需要首先修改configure.ac文件,因为它没有在正确的位置搜索ruby头文件。今天是我查看config.ac文件的第一天,所以在挖掘和修改它们时肯定会有问题!但是,是的,我对这类事情完全是个新手,所以如果这是一个愚蠢的问题,很抱歉。

在我的系统上,ruby.h文件位于/usr/include/ruby/ruby.h,而实际上在/usr/include/ruby.h处有一个名称类似的文件。我承认我不知道哪一个是正确的,但无论哪种方式,我的配置脚本都找不到它。

这是我的configure.ac文件中应该找到正确标头的部分:

代码语言:javascript
复制
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

但这是我得到的输出:

代码语言:javascript
复制
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文件中,会给出以下消息:

代码语言:javascript
复制
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文件的用途。它无处可寻。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-03-17 12:06:07

最基本的问题是,看起来Ruby头文件的安装不完整。Autoconf探测很好(除了通常不应该在configure.ac中更改CPPFLAGS,因为它是为用户保留的)。

这里真正的问题是您的ruby/config.h文件发生了什么。这应该是普通Ruby开发文件安装的一部分。

值得注意的是,在Debian和Ubuntu上,一些头文件已经为multiarch移动了(这样一个包的多个架构可以同时安装),ruby/config.h文件,因为它是架构相关的,被移到了一个子目录中。在我的系统上,例如:

代码语言:javascript
复制
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,那么我可能会收到错误消息。这可能是问题所在吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15349742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档