2014-02-21 3 views
0

Я получаю сообщение об ошибке pythagorean.so: undefined symbol: cos. Я компилирую с math.h, stdlib.h и stdio.h библиотеками и переключателем -lm. Здесь находится фрагмент кода:C ошибка компоновщика с gcc и math.h

static bool 
law_of_cosine_run(esh_command* cmd) 
{ 
    if (strcmp(cmd->argv[0], "lawofcosine") == 0) { 
     printf("The length of the third side is: %f\n", 
     law_of_cosine(strtol(cmd->argv[1], NULL, 10), 
     strtol(cmd->argv[2], NULL, 10), strtol(cmd->argv[3], NULL, 10)));  
     return true; 
    } 
    return false; 
} 

static double 
law_of_cosine(double x, double y, double z) 
{ 
    return sqrt((x * x) + (y * y) - (2 * x * y * cos(z))); 
} 

Кто-нибудь знает, почему это произошло? pythagorean.c - это мой .c файл.

Благодаря

+1

ли вы положили '-lm' до или после того, как все источника и объектные файлы? Это должно быть после. – zwol

ответ

3

При компиляции это убедиться, что вы типа

gcc *.c -lm 
Смежные вопросы