impossible de se connecter à la bibliothèque fftw3

Je comstack un programme de test pour tester le fftw3 (ver3.3.4). Comme il n’est pas installé avec root previlidge, j’ai utilisé la commande suivante:

gcc -lm -L/home/my_name/opt/fftw-3.3.4/lib/ -I/home/my_name/opt/fftw-3.3.4/include/ fftwtest.c 

où la bibliothèque est installée dans

 /home/my_name/opt/fftw-3.3.4/ 

Mon code est le 1er tutoriel sur le site de fftw3:

 #include  #include  int main(){ int n = 10; fftw_complex *in, *out; fftw_plan p; in = (fftw_complex*) fftw_malloc(n*sizeof(fftw_complex)); out = (fftw_complex*) fftw_malloc(n*sizeof(fftw_complex)); p = fftw_plan_dft_1d(n, in, out, FFTW_FORWARD, FFTW_ESTIMATE); fftw_execute(p); /* repeat as needed */ fftw_destroy_plan(p); fftw_free(in); fftw_free(out); return 0; } 

quand j’ai compilé le programme, il me renvoie les erreurs suivantes:

 /tmp/ccFsDL1n.o: In function `main': fftwtest.c:(.text+0x1d): undefined reference to `fftw_malloc' fftwtest.c:(.text+0x32): undefined reference to `fftw_malloc' fftwtest.c:(.text+0x56): undefined reference to `fftw_plan_dft_1d' fftwtest.c:(.text+0x66): undefined reference to `fftw_execute' fftwtest.c:(.text+0x72): undefined reference to `fftw_destroy_plan' fftwtest.c:(.text+0x7e): undefined reference to `fftw_free' fftwtest.c:(.text+0x8a): undefined reference to `fftw_free' collect2: ld returned 1 exit status 

Une recherche rapide implique que je ne lie pas correctement à la bibliothèque, mais il est intéressant de ne pas se plaindre de la déclaration de fftw_plan et de fftw_complex. En fait, si je supprime toutes les fonctions commençant par “fftw_”, en ne conservant que la déclaration, la compilation sera transmise.

Alors, où est-ce que je me suis trompé? La liaison est-elle correcte? Toute suggestion serait appréciée.

Vous avez indiqué à l’éditeur de liens où trouver la bibliothèque via -L , mais vous ne lui avez pas indiqué à quelle bibliothèque lier. Pour ce faire, ajoutez -lfftw3 à la fin de la ligne, avant -lm .

De plus, l’indicateur -L doit être répertorié après fftwtest.c .

Vous devez également append que vous créez un lien vers la bibliothèque fftw.

Ajouter quelque chose comme:

 -lfftw 

Cela dépend du nom du fichier de bibliothèque. (Notez comment vous faites cela pour la bibliothèque mathématique avec -lm .)