2015-02-04 6 views
0

Я пытаюсь узнать достаточно c, чтобы удовлетворить мою случайную потребность в написании простых программ, которые отвечают на конкретные вопросы, которые у меня есть. Я слежу за учебником и использую Geany для удобства использования. Вместо этого я не могу заставить простую программу работать. Вот мой исходный код:linker reports undefined reference, но код компилируется OK

#include <stdio.h> 
#include <math.h> 

int main(int argc, char **argv) 
{ 
    int x, y; 
    double c, sqr_c; 

    for (x = 10; x <= 31; x++) 
    { 
     for (y = 10; y <= 31; y++) 
     { 
      c = 1000 * x * x + y * y; 
      sqr_c = sqrt(c); 
      printf ("%f\n", sqr_c); 
     } 
    } 

    return 0; 
} 

Он отлично компилируется (НКУ -с), но когда я пытаюсь построить исполняемый файл, я получаю:

gcc "concsqr.c" -Wall -o "concsqr" (in directory: /home/chip) 
/tmp/cccSmdZS.o: In function `main': 
concsqr.c:(.text+0x4b): undefined reference to `sqrt' 
collect2: error: ld returned 1 exit status 
Compilation failed. 

Я читал кое-что о том, чтобы убедиться, что компоновщик может найти библиотека, где определена sqrt(), но я не знаю, как это сделать, и не будет ли она в стандартном расположении? Почему линкер уже не знает, где он? Это стандартная библиотека для c.

ответ

0

Вы должны попытаться скомпилировать программу с -lm флагом, как libm.so является библиотекой по математике и -l флага добавляет lib префикс и .a или .so суффикса.

gcc concsqr.c -Wall -o concsqr -lm 

 Смежные вопросы

  • Нет связанных вопросов^_^