LINUX.ORG.RU

glibc double exp(double)


0

0

Не понимаю в чем проблема

#include <math.h>
...
long long int var1 = somethingfunction(); //фукция возвращает корректное значение
float var2 = exp(-5e-8 * TIME);
На что компилятор ругается undefined reference to `exp' Причем если вставить литеральное значение exp(-5e-8) - все компилируется. Различные преобразования/приведения к типу, как и определение выражения отдельной переменной (double var3 = -5e-8 * TIME; var2 = exp(var3);) не помогают.

★★

Это линкер ругается. скажи ему -lm

Reset ★★★★★
()

Полагаю, в случае exp(-5e-8) gcc оптимизирует и превращает это в константу. А undefined reference to `exp' обычно пишется когда забыл указать юзаемую библиотеку.
Попробуй указать -lm компилятору.

l5k
()

скомпилировалось/слинковалось с -lm :). Спасибо.
Но где логическая ошибка не понимаю.

unisky ★★
() автор топика

причем пробовал с icc -там без бубна все компилируется (только бинарник потом не работает :))

unisky ★★
() автор топика
Ответ на: комментарий от unisky

exp(const) вычисляется на этапе компиляции, поэтому тут вызова функции нет и линковать с m не нужно

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.