Como compilar um programa C que usa math.h?

14

Estou tendo problemas no arquivo de cabeçalho math.h e quando uso a função raiz quadrada como em sqrt(d). Mas meu compilador não está suportando isso. Por favor, informe-me sobre este problema.

Minha versão do Ubuntu é 2012.

shreya
fonte
2
Embora gostemos de questões de programação - a questão deve estar relacionada ao Ubuntu - você pode esclarecer em detalhes qual é o problema aqui - exemplos etc?
fossfreedom
é como sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... o meu compilador não está apoiando este comando
shreya
1
responda editando sua pergunta. Dê exemplos de código, como você está compilando, versão do ubuntu, versão do compilador, você tentou fazer isso em outro compilador / distribuição. O que acontece etc?
fossfreedom
1
@shreya Perguntas relacionadas a problemas com o código que você escreveu devem descrever o problema específico - e incluir um código válido para reproduzi-lo - na própria pergunta. Veja SSCCE.org para orientação.
Braiam
3
Realmente não acho que isso seja fora de tópico. Em muitos outros sistemas operacionais, como o Windows, não é necessário passar uma opção de vinculador especial para usar a biblioteca de matemática nos programas em C. Mesmo em alguns sistemas operacionais semelhantes ao Unix, a implementação padrão da biblioteca C não exige isso. Este é um problema que muitos usuários enfrentam quando mudam para sistemas GNU / Linux como o Ubuntu. Eu gostaria que a pergunta fosse melhor escrita para incluir o erro específico - se acabarmos considerando este tópico, talvez devêssemos editá-lo - mas essa não é uma questão geral de programação C, é uma pergunta sobre como usar gccno Ubuntu .
Eliah Kagan

Respostas:

24

Anexe -lmao final do seu gcccomando.

Com todas as versões recentes do GCC em sistemas GNU / Linux como o Ubuntu, quando você usa a biblioteca de matemática, é necessário vincular explicitamente a ela. Ele não é vinculado automaticamente ao restante da biblioteca C padrão.

Se você estiver compilando na linha de comando com o comando gccou g++, poderá fazer isso colocando -lmo final do comando .

Por exemplo: gcc -o foo foo.c -lm

Eliah Kagan
fonte
4

Se você for compilar um programa C com a biblioteca math.h no LINUX usando GCC ou G ++, terá que usar a opção –lm após o comando compile.

gcc xyz.c -o xyz -lm

Aqui,

gcc é o comando do compilador (nome do compilador)
xyz.c é um nome de arquivo de origem.
-o é uma opção para especificar o arquivo de saída.
xyz é o nome do arquivo de saída.
-lm é uma opção para vincular uma biblioteca matemática ( libm ).

para mais detalhes, aqui está o link que contém o artigo completo.
Compilando o programa C com math.h no Linux.

Mike
fonte
Após o comando de vinculação, não o comando de compilação. (Desculpe pela nitpicking, mas acertar ajuda a entender outras situações).
Mousomer 29/09/16