ld não consegue encontrar biblioteca de matemática

2

Acabei de instalar o Ubuntu 12.04 LTS e estou tendo problemas para vincular as funções matemáticas (de). Eu tenho o gcc instalado e capaz de compilar a fonte bem. No entanto, tentando:

gcc -lm montecarlo_time.o parsercfile.o -o trmcfl

Dá vários erros no formulário:

montecarlo_time.o: In function 'main:
/home/karthik/Research/MC/trmcfl/Dumps/whiteScaling/18-Sep-2012/montecarlo_time.c:75: undefined reference to asin'

No entanto, todos esses arquivos estão presentes (e visíveis no ldconfig -v -N)

/lib/i386-linux-gnu/libm.so.6
/lib64/libm.so.6
/usr/lib/i386-linux-gnu/libm.a
/usr/lib/i386-linux-gnu/libm.so
/usr/lib/i386-linux-gnu/xen/libm.a
/usr/lib64/libm.a
/usr/lib64/libm.so

Por que a vinculação está falhando?

    
por Karthik 18.09.2012 / 18:10

2 respostas

2

você deve usar -lm no final.

porque os símbolos não resolvidos são encontrados depois que o gcc encontra montecarlo_time.o e não há biblioteca ou qualquer outra coisa na qual ele possa descobrir que pode resolver esse símbolo.

    
por Deepak 18.09.2012 / 19:30
2

Eu tenho sempre digitado gcc -lm file.c ; Até a versão mais recente do Ubuntu, isso funcionou. Na internet, vejo sugestões de que é um estilo ruim, mas funciona. Parece que isso mudou agora.

    
por Anthony Quas 31.10.2012 / 07:37