Usando funções duplas longas com gcc

Usando funções duplas longas com gcc

Estou tendo dificuldade em fazer com que o gcc do Ubuntu entenda as long doublefunções de manipulação de math.h, a saber sqrtl, cabsle cexpl. A mensagem que recebo para todos eles durante a compilação é

undefined reference to `sqrtl'

Existe algum sinalizador diferente -lmdaquele 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-builtindá o mesmo erro que ocorre com uma variável no argumento.

Obrigado porJason Contipara esta informação.

informação relacionada