Me está costando mucho lograr que gcc de Ubuntu comprenda las long double
funciones de manipulación de math.h, es decir sqrtl
, cabsl
y cexpl
. El mensaje que recibo para todos ellos al compilar es
undefined reference to `sqrtl'
¿Hay alguna otra bandera aparte de -lm
esa que debo poner en la línea de comando para que gcc comprenda estas funciones? ¿Es un paquete perdido? ¿O es un problema con la versión que estoy usando (4.6.1 en Oneiric)?
Respuesta1
El problema está en el orden en que se pasan los argumentos al compilador.
En Oneiric, las bibliotecas vinculadas deben llamarsedespuésel nombre del archivo fuente:
gcc test.c -lm
Este cambio y las razones del mismo se describen con más detalle.aquí.
El problema no aparece para funciones de valores constantes porque gcc tiene versiones integradas de ellas. Entonces compilar -fno-builtin
da el mismo error que con una variable en el argumento.
Gracias porJason Contipara esta información.