Очевидно, что вещи в мире C немного отличаются, потому что вам не нужен источник во время выполнения.Обычный способ работы в системах GNU / Linux (и многих других * ix) заключается в том, что некоторые этапы настройки выполняются с использованием сценария или программы настройки.Наиболее распространенным из них является знаменитый скрипт configure
, сгенерированный GNU autoconf
.Автоинструменты генерируют много файлов кеша и копируют множество вспомогательных сценариев в дерево исходных текстов, поэтому не забудьте установить .gitignore
, или вы сойдете с ума.
Очень многие библиотеки устанавливают управляющие файлы для pkg-config
в $prefix/lib/pkgconfig
или $prefix/share/pkgconfig
.Они считываются инструментом pkg-config
для проверки существования библиотек и получения правильных флагов компилятора и компоновщика для этой библиотеки.Они представляют собой простой текст, поэтому посмотрите в /usr/lib/pkgconfig
, чтобы получить представление о том, как они выглядят.
В autoconf
файл configure.ac
компилируется в configure
путем вызова макросапроцессор m4
(через оболочку с именем autoconf
).Проверить библиотеку, которая работает с pkg-config
, очень просто.Вы добавляете что-то вроде следующего к configure.ac
# Checks for libraries.
PKG_CHECK_MODULES([GLib], [glib-2.0])
. Это проверит, что pkg-config
установлен, а затем использует его для проверки пакета glib-2.0
, распечатывая сообщение Checking for GLib...
по пути.,Он также установит переменные оболочки GLib_CFLAGS
и GLib_LIBS
и организует их замену на любые файлы, созданные с помощью AC_CONFIG_FILES
(например, Makefile
из Makefile.in
).Если он не найдет glib, configure
завершится с ошибкой.Посмотрите на /usr/share/aclocal/pkg.m4
, чтобы найти определение PKG_CHECK_MODULES
, которое поддерживает несколько других опций.Документация находится на справочной странице pkg-config(1)
.
Если ваша зависимая библиотека не поддерживает pkg-config
, иногда поставщик библиотеки предоставляет макрос autoconf
.Старые версии SDL, например, предоставляли AM_PATH_SDL
, но в новых версиях просто используется pkg-config
.
Если от поставщика нет поддержки, иногда в стороннем архиве autoconf есть сторонняя поддержка .Архив autoconf доступен в виде пакета в Debian GNU / Linux и MacPorts (и, возможно, во многих других системах), что означает, что любые необходимые определения могут использоваться без копирования .m4
файлов вручную.
Если нетиз вышеприведенного верно, затем проверьте заголовок, используя что-то вроде AC_CHECK_HEADER
и проверьте библиотеку, используя что-то вроде AC_CHECK_LIB
.