Estou tendo dificuldade em fazer com que o gcc do Ubuntu entenda as long double
funções de manipulação de math.h, a saber sqrtl
, cabsl
e cexpl
. A mensagem que recebo para todos eles durante a compilação é
undefined reference to `sqrtl'
Existe algum sinalizador diferente -lm
daquele que devo colocar na linha de comando do gcc para entender essas funções? É um pacote perdido? Ou isso é um problema com a versão que estou usando (4.6.1 no Oneiric)?
Responder1
O problema está na ordem em que os argumentos são passados ao compilador.
No Oneiric, as bibliotecas vinculadas devem ser chamadasdepoiso nome do arquivo de origem:
gcc test.c -lm
Esta mudança e as razões para isso são descritas com mais detalhesaqui.
O problema não aparece para funções de valores constantes porque o gcc possui versões integradas delas. Portanto, compilar com -fno-builtin
dá o mesmo erro que ocorre com uma variável no argumento.
Obrigado porJason Contipara esta informação.