Два метода для привязки объекта с помощью GCC? - PullRequest
3 голосов
/ 09 июня 2010

Я знал, что должен использовать опцию -l для привязки объектов с помощью GCC.это gcc -o test test.c -L./ -lmy

Но я обнаружил, что "gcc -o test2 test.c libmy.so" тоже работает.

Когда яиспользовать readelf для этих двух исполняемых файлов, я не могу найти никакой разницы.Тогда почему люди используют опцию -l для связывания объектов?Есть ли у него какое-то преимущество?

Ответы [ 2 ]

4 голосов
/ 09 июня 2010

Поскольку у вас может быть статическая или совместно используемая версия библиотеки в каталоге библиотеки, например, libmy.a и libmy.so, или обе.Это в большей степени относится к системным библиотекам: если вы ссылаетесь на библиотеки в локальном дереве сборки, вы знаете, какую версию вы создаете, статическую или общую, но вы можете не знать о конфигурации других систем и смешивании библиотек.

InКроме того, некоторые платформы могут иметь разные суффиксы .Так что лучше указывать это каноническим способом.

0 голосов
/ 26 сентября 2012

Основная причина в том, что -lname будет искать libname.a (или libname.so и т. Д.) В списке поиска библиотек . Вы можете добавить каталоги в список поиска библиотек с помощью -L вариант. Это удобство, встроенное в программу драйвера компилятора, облегчающее поиск библиотек, установленных в стандартных местах системы.

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