Надеясь, что кто-то видел это раньше и может дать некоторое представление.C sinhl undefined reference при включении math.h и ссылки libm
Я включаю math.h И ссылку libm, используя gcc 4.2.1 на FreeBSD 9.2 x86_64.
Такие функции, как sinl, cosl, tanl work, но как только я вызываю sinhl и тому подобное, я получаю предупреждения о неявных объявлениях встроенных и ошибок для неопределенных ссылок.
Соответствующий раздел заголовка:
#include <math.h>
#include <stdlib.h>
// ....
long double function0(long double inValue)
{
// Sine long double == sinl
return sinl(inValue);
}
// ....
long double function3(long double inValue)
{
// Hyperbolic Sine long double == sinhl
return sinhl(inValue);
}
Makefile Материал:
all:
gcc -o test test.c -lm
Compile попытка приводит:
function_references.h: In function 'function3':
function_references.h:39: warning: incompatible implicit declaration of built-in function 'sinhl'
/tmp//ccSpynxE.o: In function `function3':
test.c:(.text+0x98): undefined reference to `sinhl'
я проверил math.h и как sinl и sinhl перечислены так же. Просто для усмешек я попытался связать с 32-битной версией libm, которая ни к чему не привела меня.
Интересно, если я посмотрю на символы в /usr/include/libm.a, я вижу вещи для sinl, но ничего для sinhl. Нужно ли связать другие библиотеки с гиперболическими функциями?
Я уже в течение последних 24 часов выхожу из-за этого, не видя ничего очевидного. Я испытываю ту же проблему и для многих других функций: coshl, tanhl, logl, log2l, log10l, expl.
Любые идеи из свежего набора глаз?
Заранее спасибо. -T
попробуйте ввести 'man sinhl' в командной строке вашего рабочего стола FreeBSD –
Спасибо за ответ Giovanni. Интересно, что я ничего не получаю от «человека силь», но «человек грешник» возвращает документацию. Хммм ... что-то не установлено. Поиск чего-то, что я мог бы установить сейчас. – TCCSE
@Giovanni Lombardo: Спасибо, что задумался о том, что функция полностью отсутствует из ОС. Очень признателен. Решением было установить «libmissing» для отсутствия математических функций. Для тех, кто еще, что впадает в него: - Установка/USR/порты/математика/libmissing - Добавьте #include для missing_math.h в код. - Обновить Makefile, чтобы включить путь и ссылку для libmissing: gcc -I/usr/local/include -L/usr/local/lib -o test test.c -lm -lmissing – TCCSE