gcc компилирует ссылки .a файл - PullRequest
0 голосов
/ 07 мая 2011

в моей домашней работе я должен использовать эту команду для компиляции моей программы:

gcc -o mtm_rentals -std = c99 -Wall -pedantic-errors -Werror -DNDEBUG mtm_ex2.c rentals.c list.c -L -lmtm

что я могу изменить в этой строке - это файлы, которые я пишу после -DNDEBUG. когда я делаю это, gcc говорит, что есть неопределенные ссылки на конкретные функции. теперь эти функции объявлены в файле .h и реализованы в данном файле с именем libmtm.a я пришел к выводу, что он не распознает libmtm.a, но наша домашняя задача говорит, что флаг -lmtm (который нигде не объявлен) должен связать libmtm.a с программой.

что мне здесь не хватает? я должен как-то реализовать флаг -lmtm? спасибо!

1 Ответ

3 голосов
/ 07 мая 2011

Вы пропускаете . (одну точку) за -L.

-lmtm будет ссылаться на библиотеку libmtm, это правильно. Это не флаг -lmtm, это флаг -l, объединенный с mtm, библиотекой, с которой вы хотите связать. Эта библиотека ищется по некоторым предопределенным путям (например, /usr/lib/) и дополнительно по путям, указанным -L. Предполагая, что libmtm живет в вашем текущем каталоге, вам нужно добавить это к -L, что делается с помощью ..

...