0

I believe that I have all the necessary tools and sources, including the latest sources of bison from its git repository.

When I run ./bootstrap I get the following error:

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

Looking at the sources reveals that lib/local.mk includes lib/gnulib.mk before line 19 (the first line in the error message above). lib/gnulib.mk is a generated file. It has, for example:

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

while lib/local.mk has:

lib_libbison_a_SOURCES +=                       \

so, there is an missing "lib_" in the generated file (or an extra "lib_" in the fixed source).

Any idea how to overcome this problem?t

4

3 回答 3

1

经过一番挖掘,我发现了问题,实际上是问题:

“bootstrap”脚本,在调用 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'

在运行 bootsrap 脚本之前,我最终创建了 prefix-gnulib-mk 的硬拷贝。(我认为编辑 bootstrap.conf 并省略“--symlink”也可能有效。)为了安全起见,我还使用引导脚本的选项来使用硬拷贝,即“--copy”。 . 从那时起,一切都很顺利,我在 Windows 上得到了我的 bison 可执行文件。

于 2013-06-20T07:30:52.383 回答
0

你必须改变其中之一。我会lib/local.mk先尝试:

 libbison_a_SOURCES +=   \

因为它看起来更像是预期的。再试./bootstrap一次。如果可行,请将该补丁提交给野牛维护者。如果它不起作用,我会通知维护人员他们从 git 构建的版本不起作用。

于 2013-06-17T16:51:06.110 回答
0

看起来您缺少一些文件,可能是因为git clone默认情况下不包含子模块。运行git submodule update --init检查子模块,然后./bootstrap重试。

于 2013-06-17T22:35:28.417 回答