На моей машине (Windows работает под управлением Cygwin) он компилируется правильно. Flex - это версия 2.5.35, а bison - это версия 2.3
.
На Linux-машине 1 он компилируется правильно. Flex - это версия 2.5.4, а bison - версия 1.875c.
На Linux-машине 2 он не компилируется правильно. Flex - это версия 2.5.4, а бизон - 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
Эту ошибку можно устранить, выбрав опцию -ly в gcc, чтобы программа компилировалась, но скомпилированная программа не работает должным образом, как на моем компьютере и другом компьютере с Linux.
Что может быть причиной проблемы?