¿Cómo compilar un programa en C que usa math.h?

14

Tengo problemas con el archivo de encabezado math.h y cuando uso la función de raíz cuadrada como en sqrt(d). Pero mi compilador no es compatible con esto. Por favor avísame sobre este problema.

Mi versión de Ubuntu es 2012.

shreya
fuente
2
Si bien nos encantan las preguntas de programación, la pregunta debe estar relacionada con Ubuntu, ¿puede aclarar en detalle cuál es el problema aquí, ejemplos, etc.?
fossfreedom
es como sqrt ((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1)) ... mi compilador no admite este comando
shreya
1
por favor responda editando su pregunta. Dé ejemplos de código, cómo está compilando, la versión de ubuntu, la versión del compilador, ¿ha intentado hacer esto en otro compilador / distribución? ¿Qué pasa etc.?
fossfreedom
1
@shreya Las preguntas sobre problemas con el código que ha escrito deben describir el problema específico, e incluir un código válido para reproducirlo, en la pregunta misma. Ver SSCCE.org para orientación.
Braiam
44
Realmente no creo que esto esté fuera de tema. En muchos otros sistemas operativos, como Windows, no es necesario pasar una opción especial de enlace para usar la biblioteca matemática en los programas en C. Incluso en algunos sistemas operativos tipo Unix, la implementación estándar de la biblioteca C no requiere esto. Este es un problema que enfrentan muchos usuarios cuando cambian a sistemas GNU / Linux como Ubuntu. Desearía que la pregunta se escribiera mejor para incluir el error específico: si terminamos considerando este tema, tal vez deberíamos editarlo, pero esta no es una pregunta general de programación en C, es una pregunta sobre cómo usar gccUbuntu .
Eliah Kagan

Respuestas:

24

Anexar -lmal final de su gcccomando.

Con todas las versiones recientes de GCC en sistemas GNU / Linux como Ubuntu, cuando usa la biblioteca matemática, debe vincularla explícitamente. No se vincula automáticamente con el resto de la biblioteca estándar de C.

Si está compilando en la línea de comandos con el comando gcco g++, lo lograría colocando -lmal final del comando .

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

Eliah Kagan
fuente
5

Si va a compilar un programa C con la biblioteca math.h en LINUX usando GCC o G ++, deberá usar la opción –lm después del comando de compilación.

gcc xyz.c -o xyz -lm

Aquí,

gcc es el comando del compilador (nombre del compilador)
xyz.c es un nombre de archivo fuente.
-o es una opción para especificar el archivo de salida.
xyz es el nombre del archivo de salida.
-lm es una opción para vincular contra la biblioteca matemática ( libm ).

para más detalles aquí está el enlace que contiene el artículo completo sobre el mismo.
Compilando el programa C con math.h en Linux.

Miguel
fuente
Después del comando de vinculación, no el comando de compilación. (Perdón por las críticas, pero hacerlo bien ayuda a comprender otras situaciones).
Mousomer