Kann keine Verbindung zur fftw3-Bibliothek herstellen

Ich kompiliere ein Testprogramm zum Testen von fftw3 (Version 3.3.4). Da es nicht mit root previlidge installiert ist, habe ich den folgenden Befehl verwendet:

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

wo die Bibliothek installiert ist in

/home/my_name/opt/fftw-3.3.4/

Mein Code ist das erste Tutorial auf der Website von fftw3:

#include <stdio.h>
#include <fftw3.h>
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;
}

wenn ich das Programm kompiliert habe, werden folgende Fehler zurückgegeben:

/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

Eine Schnellsuche impliziert, dass ich nicht korrekt auf die Bibliothek verlinke, aber interessanterweise beschwert sie sich nicht über die Deklaration von fftw_plan und fftw_complex. Wenn ich alle Funktionen entferne, die mit "fftw_" beginnen, und nur die Deklaration behalte, wird die Kompilierung bestanden.

Also, wo bin ich falsch gelaufen? Ist die Verknüpfung korrekt? Jeder Vorschlag wäre willkommen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage