编译GCC时,找不到来自Flex的输出,放弃编译。

4

我正在尝试在Debian(6或7)上编译gcc-4.9RCgcc-4.8.2

已安装flex 2.5.35,甚至编译了自己的flex2.5.39

我确认它可以从简单的.l文件生成yy.c输出。

另外,我在gcc文档中了解到,在从发布版(gcc-4.8.2)进行编译时不应该需要flex。

尽管如此,在运行make之后,我总是会在某些内部configure中得到以下内容:

checking for bison... bison -y
checking for flex... flex
checking lex output file root... configure: error: cannot find output from flex; giving up
make[2]: *** [configure-stage1-gmp] Error 1
make[2]: Leaving directory `***/gcc-bin-8'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `***/gcc-bin-8'
make: *** [all] Error 2

它配置有:

../gcc-4.8.2/configure --enable-languages=c,c++,fortran --with-cloog --prefix=/home/***/gcc-4.8.2

我不知道应该尝试什么。
1个回答

6
这个错误是在构建gmp(gcc的前提条件)时生成的。这是gmp中已知的一个bug,出现在4.8.3版本中。参考:gmp bug。如果您运行contrib/download_prerequisites,将默认获取gmp 4.8.3。解决方法是编辑gmp-4.8.3/configure.in和gmp-4.8.3/configure,并将

M4=m4-not-required

更改为

M4=m4


由于当前版本的GMP是6.0.0a,我不明白为什么OP会使用如此古老的GMP版本。我在Mac OS X 10.9.4和Ubuntu 14.04 Trusty Tahr衍生版上愉快地构建了GCC 4.9.1,并使用GMP 6.0.0a(以及MPC 1.0.2、MPFR 3.1.2、ISL 0.12.2和Cloog 0.18.1),这些都是由GCC构建的,因为它正在构建其他所有内容。 - Jonathan Leffler
OP没有说明他使用的GMP版本。 - ACyclic
显然,库中出现了混乱,因为我在我的主目录(新的)中有一些库,而在主系统中有一些旧的库。我仍然没有成功地在那里编译新的GCC,但是现在我使用英特尔编译器,直到管理员为我构建最新版本的GCC。顺便说一下,在我的自己的电脑上经常从源代码编译GCC,我从来没有遇到过这样的问题。 - Vladimir F Героям слава

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接