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.
0
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