在我的机器(运行 cygwin 的 Windows)上,它可以正确编译。Flex 是 2.5.35 版,bison 是 2.3 版
在 linux 机器 1 上它可以正确编译。Flex 是 2.5.4 版,bison 是 1.875c 版。
在 linux 机器 2 上它不能正确编译。Flex 是 2.5.4 版本,bison 是 2.3。
通过查看 flex/bison 版本号,人们会期望,如果它在我的机器上正确编译,它会在机器 2 上正确编译,但事实并非如此。
在 linux 机器 2 上,当我运行 gcc -c y.tab.c 时,我多次收到以下警告
警告:内置函数“printf”的隐式声明不兼容
当我运行以下
gcc -o cminus y.tab.o lex.yy.o -ly -lfl
我收到以下错误。
gcc -o cminus y.tab.o lex.yy.o -ly -lfl
/usr/bin/ld: cannot find -ly
collect2: ld returned 1 exit status
make: *** [cminus] Error 1
这个错误可以通过去掉 gcc 中的 -ly 选项来消除,这样程序就可以编译了,但是编译后的程序不能像在我的机器和另一台 linux 机器上那样正常运行。
什么可能导致问题?