Математическая библиотека включена, но ошибка: неопределенная ссылка на `журнал'. Может это кастинг?

У меня есть функция со следующим кодом:

static void
calculate_lifetime(uint16_t p_weight){
  double param, result;
  param = (double) p_weight;
  result = log (param);
}

Я включаю математическую библиотеку, но при компиляции получаю ошибку:

неопределенная ссылка на `журнал'

Я что-то не так делаю при кастинге? Когда я удаляю параметр и ставлю число вроде 8, он компилируется правильно. Я компилирую для Contiki.


person CodePorter    schedule 22.02.2014    source источник
comment
Когда вы компилируете, вы ссылаетесь на математическую библиотеку? Есть вариант -lm?   -  person Eric Jablow    schedule 23.02.2014
comment
Просто включить <ath.h> недостаточно, вы также должны связать математическую библиотеку (с -lm для gcc).   -  person M Oehm    schedule 23.02.2014
comment
У тебя все хорошо :). Я опубликую ответ для тех, кто использует Contiki. Мне пришлось обновить файл Contiki Make и соответствующий файл Make процессора.   -  person CodePorter    schedule 23.02.2014
comment
@CodePorter, если вы используете константу, многие компиляторы могут выполнить расчет во время компиляции и, таким образом, избежать связывания с math.h.   -  person Shafik Yaghmour    schedule 23.02.2014
comment
Помните, что -lm должно следовать за именем исходного файла в командной строке компилятора.   -  person Keith Thompson    schedule 23.02.2014
comment
В показанном коде переменная result никогда не используется, поэтому компилятор может в конечном итоге оптимизировать все тело функции, а поскольку оно статично, он может просто не вызывать функцию и не генерировать для нее какой-либо код. Если бы функция возвращала результат, все было бы хорошо.   -  person Jonathan Leffler    schedule 23.01.2015