Programa só roda se Linkad. [RESOLVIDO]

1. Programa só roda se Linkad. [RESOLVIDO]

Daniel Marchi
DMS_

(usa elementary OS)

Enviado em 05/12/2012 - 09:43h

Bom Dia,

Estava com um problema na função sqrt do math.h, depois de algumas pesquisas eu li que precisa linkar para poder rodar, alguém sabe o por que precisa linkar?

Segue o codigo

#include <stdio.h>
#include <math.h>
int main(void) {
float n, r;

do {
printf("Digite um número inteiro não negativo\n");
scanf("%f",&n);
} while (n<0);

r = sqrt(n);
printf("A raiz quadrada do número %.1f e %.1f\n", n ,r);

return 0;
}


Tentando compilar normalmente ele me retorna o seguinte erro:

[marchi@marchi Documents]$ gcc raiz.c
/tmp/ccBYjKsa.o: In function `main':
raiz.c:(.text+0x3d): undefined reference to `sqrt'
collect2: error: ld returned 1 exit status
[marchi@marchi Documents]$


Agora quando eu compilo linkando ele não me retorna erro nenhum, e eu consigo executar o arquivo raiz normalmente como esperado :

[marchi@marchi Documents]$ gcc raiz.c -o raiz -lm
[marchi@marchi Documents]$


A dúvida é por que preciso linkar com -lm?


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 05/12/2012 - 11:05h

A libm, invocada pelo linker quando você especifica "-lm", é a biblioteca que implementa as funções matemáticas. Na maioria dos Unixes (todos os que eu conheço, pelo menos), a implementação das funções matemáticas fica separada do restante das funções da biblioteca padrão do C (libc), possivelmente porque elas são menos usadas em programas mais gerais, sendo específicas para aplicações de Engenharia e Física e alguns casos de Matemática aplicada. Para todo o restante de possíveis aplicações, o peso da implementação dessas funções é separado da biblioteca principal, que contém funções que têm maior probabiblidade de serem invocadas.

3. Re: Programa só roda se Linkad. [RESOLVIDO]

Daniel Marchi
DMS_

(usa elementary OS)

Enviado em 05/12/2012 - 12:18h

Valeu.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts