Makefile для простого приложения - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть файл app.c, который использует две библиотеки GStreamer и libXml2. Чтобы скомпилировать приложение, я набираю следующее на Терминале

gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) app.c -o app -I/usr/include/libxml2 -lxml2

Когда я пытаюсь сделать Makefile с содержимым следующим образом:

all:
        gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) app.c -o app -I/usr/include/libxml2 -lxml2
run:
        ./app
clean:
        rm app

При запуске команды make я получаю ошибки, как и ожидалось. Каково значение

$(pkg-config --cflags --libs gstreamer-0.10)

Повторяя вышеизложенное, я получаю несколько файлов, которые при включении в Makefile дают мне правильный вывод.

1 Ответ

2 голосов
/ 02 декабря 2010

pkg-config --cflags libraryX выводит путь к заголовочным файлам libraryX.Без этого компилятор не знает, где искать файлы заголовков, и компиляция завершится неудачей.

Аналогично, pkg-config --libs libraryX выводит путь к фактическим файлам скомпилированной библиотеки libraryX.Без этого компоновщик не знает, где искать файлы библиотеки, и компоновка не удастся.

pkg-config --cflags --libs libraryX просто объединяет то, что я описал выше.Поскольку вы используете gcc для компиляции и компоновки, вы просто передаете эти параметры в gcc.

...