У меня возникли проблемы с использованием конфигурационного скрипта, подтверждающего наличие некоторых основных функций,Противоречивые результаты AC_CHECK_FUNCS
AC_CHECK_FUNCS([floor gettimeofday memset pow sqrt sin exp])
В соответствии с определенными критериями, результаты ожидаются (checking for x... yes
). В противном случае утверждается, что указанные выше математические функции не определены. Разница - это вызов, чтобы сначала проверить некоторые подпрограммы. Они проверяются, AC_CHECK_LIB([lapack],[dsyev_],...
. Если эти проверки не выполняются сначала, то указанные выше математические функции не могут быть проверены (окончательная компиляция работает).
Я уменьшил конфигурационный скрипт к следующему, который воссоздает вопрос,
AC_INIT([TEST], [0.0], [[email protected]])
#AC_CHECK_LIB([lapack],[dsyev_], , AC_MSG_FAILURE([Missing lapack]))
AC_CHECK_FUNCS([floor gettimeofday memset pow sqrt sin exp])
раскомментирован второй результат строки в соответствующих визуальных результатов. Я предполагаю, что математическая библиотека не включена или не проверена по какой-то причине. Фактически, AC_CHECK_LIB([m],[exp])
отлично работает.
В чем причина этого, и как правильно использовать эту директиву? О каких х-платформенных соображениях я должен соблюдать?
У вас есть более глубокое представление о том, почему в поисках 'lapack' производит правильные результаты для' ac_check_funcs' позже? Он должен изменить среду, но что? – nlucaroni
Зачем использовать AC_SEARCH_LIBS? Есть ли системное преимущество? «Предложение» идет только до тех пор, когда я сижу перед 1k строками файла конфигурации. Фу, когда я, наконец, переделаю этот скрипт configure, покупаю акции в компаниях Scotch. – nlucaroni
'configure' добавляет любую найденную библиотеку к переменной' LIBS' и использует ее для последующих тестов. 'lapack', вероятно, связан с' libm', поэтому привязка к 'lapack' делает символы в libm' доступными. –