Не работает функция exp, если в качестве параметра передавать переменную, а не константу.
Работает:
double a = exp(2.13);
Не работет:
double a = 2.13;
a = exp(a);
Ошибка выдает в процессе линковки:
/tmp/ccTAUVFt.o: In function `main':
1.c:(.text+0x1b): undefined reference to `exp'
collect2: ld returned 1 exit status
В каталоге /usr/lib/syslinux/com32/include посмотрел на math.h
Там было савсем не то, что (как мне кажется) должно быть:
#ifndef _MATH_H
#define _MATH_H
#ifndef __DBL_MIN_EXP__
# define __DBL_MIN_EXP__ (-1021)
#endif
#ifndef __DBL_MAX_EXP__
# define __DBL_MAX_EXP__ 1024
#endif
double pow(double, double);
double fabs(double);
double strtod(const char *, char **);
#endif /* _MATH_H */
У меня Ubuntu 11.04, gcc 4.4.5
Внимание вопрос:
1)Почему от константы exp работает нормально, а от переменной ругаться?
2)Почему у меня такая хренатня в math.h?
3)Как мне починить math.h? Достаточно ли будет просто заменить math.h или там и исполняемый код тоже кривой может быть?
Всем заранее огромное спасибо.