yylex - это функция, определенная после запуска файла flex через flex
. «Неопределенная ссылка на yylex» от GCC говорит вам, что компоновщик не смог найти определение yylex. Ваша проблема в том, что вы пытаетесь создать исполняемый образ без всех частей.
Например, предположим, у вас есть 3 файла: main.c, flex.l, parser.y. Вы можете сделать это, чтобы скомпилировать их.
flex flex.l
bison -d parser.y
gcc main.c parser.tab.c lex.yy.c -o myEXE
Это приведет к выполнению исполняемого файла. Но предположим, что у вас есть много файлов, и делать это все время будет очень медленно. Вы хотели бы собрать по частям.
flex flex.l
gcc -c lex.yy.c -o lex.o
bison -d parser.y
gcc -c parser.tab.c -o parser.o
gcc -c main.c -o main.o
gcc main.o parser.o lex.o
Опция -c указывает gcc компилировать и создавать объектный файл (исходный код-> скомпилирован в сборку-> сборка собрана). Это не делает никаких ссылок.
Теперь поговорим о том, как использовать make
, в котором вы можете найти несколько отличных учебников в Google.