1

コードを作成しようとしていますが、最初に 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探しているファイルが正確に何であるかわかりません。

また、ここで同様の問題を見つけましたが、提案された修正 (つまり、AC_CHECK_HEADER 呼び出し内でパスを指定) を試しましたが、何も機能しませんでした。this question hereも見ました。これにより、私の問題は権限の問題である可能性があると思いconfig.hますが、ログが話しているファイルの目的はまだわかりません。どこにもありません。

何か案は?

4

1 に答える 1

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 のマルチアーキテクチャ インストールを使用している場合に、エラー メッセージが表示されることが予想されます。 . それが問題でしょうか?

于 2013-03-17T04:06:06.620 に答える