构建 gcc 4.6 时遇到问题:对 `yylex' 的未定义引用

问题描述 投票:0回答:3

我正在尝试构建 gcc 4.6,但我收到一些链接器错误,看起来这意味着 bison 或 flex 没有链接到。当 makefile 发出此命令时:

gcc   -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common  -DHAVE_CONFIG_H -DGENERATOR_FILE  -o build/gengtype \
        build/gengtype.o build/errors.o build/gengtype-lex.o build/gengtype-parse.o build/version.o ../../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a

它告诉我:

/home/chris/code/gcc/trunk/host-x86_64-unknown-linux-gnu/gcc/../.././gcc/gengtype.c:960: undefined reference to `lexer_line'
... undefined reference to `yylex'
... undefined reference to `yybegin'
... undefined reference to `yyend'

我已经安装了 Flex 和 Bison,甚至尝试了几个 Bison 变体,但结果相同。有人知道这还意味着什么吗?

gcc makefile bison
3个回答
52
投票

我也遇到了同样的情况,这是由于缺乏灵活性和野牛。安装完flex和bison后,我运行了

make distclean
./configure
,然后编译得很好。


3
投票

我也遇到了这个问题,但我的解决办法是安装

bisonc++
。不管出于什么原因,我只安装了
bison


2
投票

自从我执行 ./configure 并尝试在正确设置 bison 和 flex 之前构建它以来,它就进入了一些奇怪的状态。调用 make clean 还不够。我把整个东西都删掉了,重新检查了一下,现在一切正常了。

© www.soinside.com 2019 - 2024. All rights reserved.