Как я могу узнать, какие флаги доступны для GCC, чтобы легче связать библиотеку? - PullRequest
0 голосов
/ 18 февраля 2012

Читая документацию по какой-то библиотеке, я увидел, что в некоторых библиотеках есть какая-то особенность, например, более простая компиляция программы с использованием этих библиотек, просто набрав «-something» в аргументе GCC вместо ввода пути к библиотеке или использования pkg (... -- cflag --clibs).

Как я могу получить список этих '-something' для библиотек или пакетов, установленных в настоящее время в моей системе?

Например, флаги OpenGL: -lGLUT -lGL

Они обязательно сохраняются в файле конфигурации GCC, когда я использую менеджер пакетов для установки новой библиотеки, или как GCC узнает, как их использовать?

Ответы [ 2 ]

4 голосов
/ 18 февраля 2012

Эти библиотеки не хранятся в любом файле конфигурации.

Если вы отметите опции GCC link , вы увидите опцию "-l", которая используется для выбора библиотек для связи. Эта опция делает поиск библиотек по указанному пути.

Если вы посмотрите в папку /usr/lib, вы увидите множество файлов с именами, такими как /usr/lib/libgtkspell.so.0.0.0. Это если для библиотеки с именем gtkspell. Вы связываете его с помощью -lgtkspell, компоновщик автоматически добавляет другие части при поиске файла.

Приложение pkg-config хорошо подходит для библиотек, которым требуются специальные дополнительные флаги GCC, при компиляции (--cflags) или компоновке (--libs). Но фактические флаги, которые pkg-config добавляет к компиляции / компоновке, являются просто стандартными флагами GCC.

0 голосов
/ 18 февраля 2012

Я хотел знать этот флаг, так как я не знал, какой аргумент дать pkg. Но я узнал, как это работает:

В / usr / lib / pkgconfig есть все, что нам нужно. Только один из этих файлов в аргумент, + --cflag и --clib.

(я не знал, что должен был посмотреть на / usr / lib / pkgconfig)

...