Что такое флаг -ll gcc?

Я пытаюсь скомпилировать программу, у которой есть -ll флаг, но gcc не может найти. Что значит l после -l действительно библиотека или это опечатка? Трудно найти информацию об этом в Google. Такой термин "расплывчатый".


person Jack    schedule 31.03.2013    source источник


Ответы (2)


-ll означает ссылку на библиотеку libl lex Solaris (доступна в /usr/lib/libl.so) .

(Параметр -l принимает имя библиотеки за вычетом префикса lib и расширения файла.)

person Frédéric Hamidi    schedule 31.03.2013
comment
Большое спасибо. Я могу скомпилировать без этого флага в Linux. Могут ли у меня проблемы с финальным исполняемым файлом? - person Jack; 31.03.2013
comment
Если вы работаете в Linux, вы используете не AT&T lex, а (скорее всего) flex. Существует библиотека для flex - libfl.a или libfl.so или аналогичных - и вы можете связать ее с помощью -lfl. Однако в нем есть пустышка yywrap() и пустышка main(), поэтому обычно она вам не нужна. Библиотека lex обеспечивает больше, например поддержку yyreject, поэтому это необходимо. - person Jonathan Leffler; 31.03.2013

Как и в моем случае, flex по умолчанию не устанавливал libfl библиотеку (с использованием Linux Mint)

Поэтому мне пришлось установить libfl-dev библиотеку отдельно

sudo apt install libfl-dev

и включите параметр -lfl вместо -ll в командную строку, как в

gcc myfile.c -lfl -o myfile 
person faruk13    schedule 17.03.2019