compilando problemas

0

Eu recebi uma mensagem de erro quando tentei executar um programa.

undefined reference to 'fftw_malloc'
f11.c:(.text+0x24d): undefined reference to 'fftw_malloc'
f11.c:(.text+0x260): undefined reference to 'fftw_malloc'
f11.c:(.text+0x273): undefined reference to 'fftw_malloc'
f11.c:(.text+0x286): undefined reference to 'fftw_malloc' 

e assim por diante.

qual é o problema exatamente? Está funcionando bem com a versão 11.04, por favor ajude!

eu reinstalei o gcc, mas o problema ainda existe Eu usei um comando como este: g ++ -lfftw3 -lcpgplot -lpgplot f11.c. as saídas são: referência indefinida tofftw_malloc 'f11.c :(. texto + 0x260): referência indefinida para fftw_malloc' f11.c :(. texto + 0x273): referência indefinida tofftw_malloc 'f11.c :(. texto + 0x286): referência indefinida para' fftw_malloc

Referência indefinida para cpgbeg' f11.c:(.text+0x2d3c): undefined reference to cpgpage ' f11.c :(. text + 0x2d49): referência indefinida para cpgsch' f11.c:(.text+0x2d71): undefined reference to cpgsvp ' por favor me dê uma sugestão.

    
por user92371 24.09.2012 / 06:38

2 respostas

2

Ok, então o pacote libfftw3-dev do Ubuntu está instalado, o que é óbvio, já que você receberia uma mensagem de erro

/usr/bin/ld: cannot find -lfftw3

em vez disso, se a biblioteca não foi encontrada pelo vinculador.

Há uma dica na documentação do vinculador do gcc dizendo que a ordem dos arquivos dados ao linker é importante. Citando a partir da documentação

% bl0ck_qu0te%

No seu caso, nenhuma função referenciada por f11.c está sendo carregada da biblioteca especificada, uma vez que elas estão listadas antes f11.c . Isso é um pouco contra-intuitivo, mas tenho certeza que compilar com

g++ f11.c -lfftw3 -lcpgplot -lpgplot

será a solução para o seu problema. Você pode precisar verificar a ordem das bibliotecas, caso elas dependam umas das outras. Em geral, se (arquivo ou biblioteca) x depender de (arquivo ou biblioteca) y, certifique-se de que x esteja listado antes de y na linha de comando fornecida ao vinculador.

    
por Martin Dirichs 25.09.2012 / 21:22
0

parece que você está perdendo algum tipo de biblioteca dinâmica. provavelmente bibliotecas padrão C e transformada rápida de Fourier. Tente reinstalar o seu compilador - isso pode ajudar. e a segunda coisa a fazer é criar mais uma vez sua biblioteca fourier rápida que você está tentando linkar.

    
por Misery 24.09.2012 / 07:43