私のマシン (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 マシンと同じように正しく機能しません。
問題の原因は何ですか?