Programa raiz quadrada em C não compilar [duplicado]

Esta pergunta já tem uma resposta:
  • Porque tens de ligar a biblioteca de matemática em C? 9 respostas

apenas começando a aprender C, e eu encontrei este programa de exemplo em um site de tutorial C, e ele está dando um erro ao compilar.

aqui está o programa, calcula a raiz quadrada de um número baseado na entrada do utilizador:

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

int main()
{
    double num, root;

    /* Input a number from user */
    printf("Enter any number to find square root: ");
    scanf("%lf", &num);

    /* Calculate square root of num */
    root = sqrt(num);

    /* Print the resultant value */
    printf("Square root of %.2lf = %.2lf", num, root);

    return 0;
}

compilo-o usando gcc no Ubuntu:

gcc -o square_root square_root.c

e aqui está o erro:

/tmp/cc9Z3NCn.o: In function `main':
square_root.c:(.text+0x4e): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
O que estou a fazer de errado? Eu posso ver que o módulo de matemática é importado, então por que o erro?

Mais uma vez, comecei a estudar C hoje, e só quero descobrir como fazer com que os programas funcionem. Obrigado pela sua paciência, pois deve ser algo óbvio.

Author: NewbieWanKenobi, 2018-09-30

2 answers

sqrt vive na biblioteca de matemática, então você precisa dizer ao seu programa para se ligar a ele com -lm:

gcc -o square_root square_root.c -lm
 2
Author: Travis Gockel, 2018-09-30 01:43:37

Você precisa compilar com-lm flag

gcc -o square_root square_root.c -lm
 1
Author: Raf.M, 2018-09-30 01:44:17