Как gcc распознает, что -lfl соответствует библиотеке flex? - PullRequest
2 голосов
/ 12 октября 2009

когда я компилирую lex.yy.c с помощью lfl, gcc распознает, что для связи с моим кодом может понадобиться некоторый файл .a гибкой библиотеки. аналогично для yacc мы указываем опцию компилятора -ly.

другими словами, если я создаю библиотеку, abc.a я хочу, чтобы gcc распознавал, что когда программа компилируется с -labc, она должна связываться с библиотекой abc.a. какие изменения конфигурации необходимо сделать?

Ответы [ 3 ]

10 голосов
/ 12 октября 2009

Библиотека yacc называется liby.so и находится в чем-то вроде /usr/lib, который является каталогом, о котором ld знает.

Ваша библиотека abc должна иметь имя libabc.so (или ".a" для статической библиотеки) и должна быть помещена в каталог, который ищется ld.

Чтобы добавить /home/foo/libs в список найденных каталогов, добавьте -L/home/foo/libs к команде ld.

2 голосов
/ 13 октября 2009

Вам не нужно ничего настраивать. Вызовите вашу библиотеку libabc.a, затем используйте командную строку:

gcc ... -L<path-to-libabc.a> -labc
0 голосов
/ 12 октября 2009

В качестве альтернативы, если вы хотите, чтобы GCC распознал библиотеку abc и связал ее с помощью -labc, предполагая, что abc является статической библиотекой, убедитесь, что ваш библиотечный файл / архив abc имеет имя libabc.a, и он либо расположен в одном из каталогов GCC ищет файлы .a, или вы добавляете флаг -L, где параметр является каталогом, в котором находится libabc.a.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...