Очевидно, что вещи в мире C немного отличаются друг от друга, потому что вам не нужен источник во время выполнения. Общий способ работы с GNU/Linux (и многими другими * ix) состоит в том, что некоторые шаги настройки выполняются с использованием сценария конфигурации или программы. Наиболее распространенным из них является знаменитый сценарий configure
, созданный GNU autoconf
. Autotools генерируют много файлов кеша и копируют множество вспомогательных скриптов в исходное дерево, поэтому не забудьте установить .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 archive. Архив autoconf доступен в виде пакета в Debian GNU/Linux и MacPorts (и, возможно, во многих других системах), что означает, что любые необходимые определения могут использоваться без копирования файлов .m4
вручную.
Если ни одно из указанных выше не является истинным, тогда проверьте заголовок, используя что-то вроде AC_CHECK_HEADER
, и проверьте библиотеку, используя что-то вроде AC_CHECK_LIB
.
Какая платформа? Поскольку фактическое стандартное место для этого в Linux находится в файле `configure` (или какая-либо часть автоконфигурации извергает его). – detly 2010-12-10 06:46:07
Если вы используете autotools, зависимости проверяются в `configure.ac`, обычно через` pkg-config`, вызывая макрос `PKG_CHECK_MODULES`. Это живет в вашем ВК. Файл `configure`, созданный с помощью` configure.ac`, запускается пользователем и не работает. – 2010-12-10 06:50:39