@anchor{Examining Libraries}
Для проверки библиотеки, функции или глобальной переменной скрипт
configure попытается скомпилировать и скомпоновать
небольшую программу, которая использует тестируемые возможности. Этим
Autoconf отличается от Metaconfig, который обрабатывает файлы
библиотеки C, используя nm или ar, чтобы определить,
какие функции
доступны. Попытка скомпоновать программу с функцией -- более надежный
вариант, поскольку он избавляет от необходимости обрабатывать различные
ключи командной строки и форматы выдачи результатов
программ nm и ar, а также выяснять расположение
стандартных библиотек. Этот подход также позволяет конфигурировать
кросс-компиляцию, а также проверять поведение функции во время
выполнения. С
другой стороны, этот подход может оказаться значительно более медленным, чем однократное
сканирование библиотек.
Компоновщики в нескольких существующих системах не возвращают статус
ошибки, если не могут найти какие-либо символы при компоновке. Эта ошибка делает
невозможным использование на таких системах скриптов настройки, созданных
Autoconf. Однако, некоторым из них могут быть заданы ключи, которые
позволяют получить правильный статус завершения работы.
Эту проблему в настоящий момент Autoconf не может обработать
автоматически. Если пользователь столкнется с таким, то он может
решить эту проблему установкой переменной среды LDFLAGS,
передавая компоновщику необходимые ключи командной строки (например,
`-Wl,-dn' на MIPS RISC/OS).
Макрос AC_TRY_LINK используется для компиляции тестовой программы
для проверки функций и глобальных переменных. Он также используется
макросом AC_CHECK_LIB для проверки библиотек
(see section Файлы библиотек), временно добавляя проверяемую библиотеку в
переменную LIBS и пытаясь скомпоновать маленькую программу.
Для C и C++, includes является любыми директивами #include, в
которых нуждается код в function-body (параметр includes будет
проигнорирован, если текущим языком является Fortran 77). Этот макрос
при компиляции помимо переменной CPPFLAGS
также использует переменные CFLAGS или CXXFLAGS, если
текущим языком является C или C++. Переменная FFLAGS будет
использована при компиляции, если текущим языком является Fortran 77.
Однако в любом случае при компоновке будут использованы
переменные LDFLAGS и LIBS.
Если файл компилируется и компонуется, то выполняются команды action-if-found, в противном случае --- action-if-not-found.
Если файл компилируется и компонуется без ошибок, то выполняется код action-if-found, в противном случае выполняется action-if-not-found.
AC_TRY_LINK. Он
отличается тем, что выдает сообщение `checking for
echo-text' в поток стандартного вывода, в том случае, если аргумент
echo-text не является пустым. Вместо этого макроса для выдачи
сообщений используйте AC_MSG_CHECKING и AC_MSG_RESULT
(see section Выдача сообщений).
Go to the first, previous, next, last section, table of contents.