0

必要なツールとソースがすべて揃っていると思います。これには、git リポジトリからの bison の最新ソースも含まれます。

./bootstrap を実行すると、次のエラーが表示されます。

lib/local.mk:19: error: lib_libbison_a_SOURCES must be set with '=' before using '+='
Makefile.am:60:   'lib/local.mk' included from here
lib/local.mk:19: warning: variable 'lib_libbison_a_SOURCES' is defined but no program or
lib/local.mk:19: library has 'lib_libbison_a' as canonical name (possible typo)
Makefile.am:60:   'lib/local.mk' included from here
autoreconf-2.69: automake failed with exit status: 1
./bootstrap: autoreconf failed

ソースを見ると、lib/local.mk の 19 行目 (上記のエラー メッセージの最初の行) より前に lib/gnulib.mk が含まれていることがわかります。lib/gnulib.mk は生成されたファイルです。たとえば、次のとおりです。

libbison_a_SOURCES =
libbison_a_LIBADD = $(gl_LIBOBJS)
libbison_a_DEPENDENCIES = $(gl_LIBOBJS)
EXTRA_libbison_a_SOURCES =

lib/local.mk には次のものがあります。

lib_libbison_a_SOURCES +=                       \

そのため、生成されたファイルに "lib_" がありません (または修正されたソースに余分な "lib_" があります)。

この問題を克服する方法はありますか?

4

3 に答える 3

1

いくつかの掘り下げの後、私は問題を見つけました、実際には問題:

「ブートストラップ」スクリプトは、gnulib/gnulib-tool を呼び出した後、次のコマンドを発行します。

build-aux/prefix-gnulib-mk --lib-name=libbison lib/gnulib.mk

これは失敗し、次のメッセージが表示されます。

Unrecognized character \xFF in column 11 at build-aux/prefix-gnulib-mk line 1

「エラー」とは言わず、ブートストラップ スクリプトの実行は終了しないため、スクリプトが吐き出す膨大な量のメッセージを見逃すのは簡単です。

ファイル build-aux/prefix-gnulib-mk は、ブートストラップ スクリプトによって生成された gnulib/build-aux/prefix-gnulib-mk へのシンボリック リンクです。おそらく、gnulib/build-aux/prefix-gnulib-mk に「#! /bin/perl」がないため、このシンボリック リンクの実行は失敗するようです。私が知っていることは、シンボリックリンクがコピーに置き換えられた場合、正常に機能するということです。

ブートストラップ スクリプトには、シンボリック リンクの代わりにコピーを使用するようにスクリプトに指示するオプションがあります。どうやら、シンボリック リンク build-aux/prefix-gnulib-mk は gnulib/gnulib-tool によって生成されます。gnulib/gnulib-tool には、シンボリック リンクの代わりにコピーを使用する同様のコマンド ライン オプションがありますが、悪用されることはありません。代わりに、「--symlink」がファイル bootstrap.conf にハードコーディングされています。

gnulib_tool_option_extras='--symlink --makefile-name=gnulib.mk'

ブートラップ スクリプトを実行する前に、prefix-gnulib-mk のハード コピーを作成することになりました。(bootstrap.confを編集して「--symlink」を省略してもうまくいくと思います。)また、安全のために、ブートストラップスクリプトのオプションを使用してハードコピー、つまり「--copy」を使用しました.. . その時点から、すべてがスムーズに進み、Windows で bison を実行できるようになりました。

于 2013-06-20T07:30:52.383 に答える
0

どちらかを変更する必要があります。私はlib/local.mk最初に試してみます:

 libbison_a_SOURCES +=   \

意図したものにより近いように見えるからです。もう一度./bootstrapやり直してください。動作する場合は、そのパッチを bison メンテナーに提出してください。それが機能しない場合は、メンテナーに、git からのビルドが機能しないことを通知します。

于 2013-06-17T16:51:06.110 に答える