Προς το περιεχόμενο

Πρόβλημα με σύνδεση βιβλιοθήκης στην C


kfoynt

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα

 

Χρησιμοποιώ ένα το πακέτο http://www.fftw.org/ σε ένα αλγόριθμο που

έχουμε γράψει σε C. Το πακέτο έχει γίνει εγκατάσταση στο /usr/local/

και έχω τρέξει make installcheck + make check με επιτυχία.

 

Το πακέτο γίνεται link στο executable που παράγει το πρόγραμμα μας

χρησιμοποιόντας την εντολή -lfftw -lm, και το executable παράγεται

με επιτυχία.

 

Όταν όμως τρέχω το executable ./hmfext παίρνω ένα segmentation fault

όταν καλεί συναρτήσεις από το πακέτο FFTW. Συγκεριμένα στον debugger

μου δείχνει:

 

 

Program received signal SIGSEGV, Segmentation fault.

0x00000000 in ?? ()

 

 

#6 0x00321d31 in fftw_plan_r2r_1d (n=4096, in=0x80d80b0, out=0x80e00b8, kind=FFTW_REDFT01, flags=0) at ../../../../sources/fftw/api/plan-r2r-1d.c:25

25 ../../../../sources/fftw/api/plan-r2r-1d.c: No such file or directory.

in ../../../../sources/fftw/api/plan-r2r-1d.c

 

 

Φαντάζομαι ότι υπάρχει πρόβλημα με την σύνδεση, αλλά μπορείς να κάνω και λάθος.

Γνωρίζει κάποιος κάτι?

Δημοσ.

το μονο NULL στο http://read.pudn.com/downloads181/sourcecode/graph/841255/fftw-3.2.1/api/plan-r2r-1d.c__.htm μπορει να ειναι το plan_r2r που λογικα ειναι σε bss.

 

 

Βαλε ενα breakpoint εκει περα

 

 

Δυστυχώς η συνάρτηση αυτή ανήκει στο πακέτο, και δεν μου δίνει δυνατότητα debugging.

Κάποια άλλη επιλογή?

 

Παραθέτω και το makefile:

 

>
include settings

OBJECTS= example.o 
OUTPUT = hmfext 

MYLIBS = -L ../../interface -linterface -L ../../source -lsource

MATLABDIR=/usr/local/MATLAB
MATLABLIBS= -Wl,-rpath-link,$(MATLABDIR)/bin/glnx86 -L$(MATLABDIR)/bin/glnx86 -lmex -lmat -leng -lmx
MATLABLINKERSONE= -I$(MATLABDIR)/extern/include
MATLABLINKERSTWO= -I$(MATLABDIR)/extern/include -DMX_COMPAT_32
MATLABLINKERSTHREE= -I$(MATLABDIR)/simulink/include -DMATLAB_MEX_FILE -ansi -D_GNU_SOURCE -fexceptions -D_FILE_OFFSET_BITS=64

FFTWLIBS= -L /usr/local/lib -lfftw3
FFTWLINKERS= -I/usr/local/include

.c.o:
$(CC) $(CFLAGS) $(DEFINE) $(MATLABLINKERSONE) $(MATLABLINKERSTWO) $(MATLABLINKERSTHREE) $(FFTWLINKERS) -c  $< -o $@

$(OUTPUT): $(OBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) $(MYLIBS) $(LIBS) $(MATLABLIBS) $(FFTWLIBS) -o $(OUTPUT)

clean:
\rm $(OBJECTS) $(OUTPUT)

 

 

---------------

 

Έφτιαξα ένα άλλο αρχείο που χρησιμοποιεί μόνο το πακέτο FFTW.

 

το κάνω compile με:

>gcc test.c -lfftw3 -lm -o test

 

και δουλεύει μια χαρά, το κάνω compile με:

 

>gcc -I/usr/local/include test.c -L/usr/local/lib -lfftw3 -lm -o test

 

και επίσης δουλεύει μια χαρά... αλλά το πρόγραμμα που γίνεται compile με το make file

ακόμη δεν λειτουργεί!

 

---------------------

 

Να προσθέσω ότι έβαλα τον κώδικα που δεν λειτουργεί από τον αλγόριθμο

στο temp προγραμμα που ανέφερα πιο πάνω και δούλεψε μια χαρα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...