Usando funções duplas longas com o gcc

2

Estou tendo dificuldades em fazer com que o gcc do Ubuntu entenda as funções long double -manipulating de math.h, ou seja, sqrtl , cabsl e cexpl . A mensagem que recebo para todos eles ao compilar é

undefined reference to 'sqrtl'

Existe algum sinalizador diferente de -lm que eu tenho que colocar na linha de comando para o gcc entender essas funções? É um pacote faltando? Ou isso é um problema com a versão que estou usando (4.6.1 no Oneiric)?

    
por Sir Whiteout 30.11.2011 / 15:58

1 resposta

1

O problema é com a ordem em que os argumentos são passados para o compilador.

Em Oneiric, as bibliotecas vinculadas devem ser chamadas após o nome do arquivo de origem:

gcc test.c -lm

Esta alteração e as razões para isso estão descritas em mais detalhes aqui .

O problema não aparece para funções de valores constantes porque o gcc tem versões internas delas. Portanto, a compilação com -fno-builtin fornece o mesmo erro que uma variável no argumento.

Obrigado pelo Jason Conti por esta informação.

    
por Sir Whiteout 01.12.2011 / 21:16