Problemas ao vincular corretamente a biblioteca fftw

0

Eu recuperei o código de um colega que compila perfeitamente no mac, mas quando eu tento compilá-lo no meu computador baseado no Ubuntu eu tenho erros. Para ser específico, eu tenho duas pastas e cada uma delas contém um Makefile, na primeira pasta a compilação vai bem mas na segunda eu tenho vários erros devido às diferentes bibliotecas: fftw, tiffio e outras bibliotecas. Aqui está o meu makefile

# Folders
LIBBIN = ../bin 

# Compiler
C=gcc-4.7
CXX=g++-4.7

# Libraries
hdrdir = -I/usr/local/include/
libdir = -L/usr/local/lib/

# Flags
CFLAGS    = -O3 -std=c99 $(hrdir) $(libdir) -fpermissive
COPT      = -lm -O3 -funroll-loops -fomit-frame-pointer -ffast-math
            -ftree-vectorize -fpermissive  

CXXFLAGS += $(COPT)  $(hdrdir) -pedantic -Wall -Wextra -Wno-write-strings
           -Wno-deprecated

LDFLAGS  += $(CXXFLAGS) $(libdir) -lpng -ltiff  -ljpeg -lfftw3 -lfftw3f
           -lfftw3l

# use openMP with 'make OMP=1'
ifdef OMP
CFLAGS   += -fopenmp
CXXFLAGS += -fopenmp
LDFLAGS  += -fopenmp
else
CFLAGS   += -Wno-unknown-pragmas
CXXFLAGS += -Wno-unknown-pragmas
endif


ifdef DEBUG
CFLAGS  += -g
CXXFLAGS += -g
LDFLAGS += -g
endif   

# Objects
OBJC =

OBJ = src_hyperspectral_generate_multispectral.o
src_hyperspectral_tv_fusion.o src_hyperspectral_nltv_fusion.o   
src_hyperspectral_nltv_fusion_ws.o

BIN = src_hyperspectral_generate_multispectral src_hyperspectral_tv_fusion
src_hyperspectral_nltv_fusion src_hyperspectral_nltv_fusion_ws

LIBMX  = ../library/*.o

default: $(OBJC)  $(OBJ)  $(BIN)

$(OBJC) : %.o : %.c
 $(C) -c $(CFLAGS)   $< -o $@

$(OBJ) : %.o : %.cpp
 $(CXX) -c $(CXXFLAGS)   $< -o $@

$(BIN) : % : %.o $(LIBMX)
 $(CXX) $(LDFLAGS)  -o $(LIBBIN)/$@  $^

.PHONY : clean
clean:
 $(RM) $(OBJ) ; cd $(LIBBIN); rm $(BIN)

E aqui está uma parte dos erros de compilação:

 g++-4.7 -O3 -funroll-loops -fomit-frame-pointer -ffast-math -ftree-  
 vectorize -fpermissive    -I/usr/local/include/ -pedantic -Wall -Wextra   
-Wno-write-strings -Wno-deprecated -Wno-unknown-pragmas -L/usr/local/lib/  
-lstdc++ -lpng -ltiff  -ljpeg -lfftw3 -lfftw3f -lfftw3l -lm   -o ../bin
/src_hyperspectral_generate_multispectral  
src_hyperspectral_generate_multispectral.o ../library/libBasic.o  
../library
 /libImageFormats.o ../library/libImage.o ../library/libHyperspectral.o
../library/libImageFormatPM.o
../library/libBasic.o : Dans la fonction « libUSTG::FFT_init() » :
libBasic.cpp:(.text+0x20e2c) : référence indéfinie vers «   
fftwf_import_wisdom_from_file »
../library/libBasic.o : Dans la fonction « libUSTG::FFT_end() » :
libBasic.cpp:(.text+0x20e77) : référence indéfinie vers «  
fftwf_export_wisdom_to_file »
../library/libBasic.o : Dans la fonction « libUSTG::FFT_2d_inv(float (*)  
[2], float (*) [2], int, int) » :
libBasic.cpp:(.text+0x20eb6) : référence indéfinie vers «  
fftwf_plan_dft_2d »
libBasic.cpp:(.text+0x20ec1) : référence indéfinie vers « fftwf_execute »
libBasic.cpp:(.text+0x20ec9) : référence indéfinie vers «   
fftwf_destroy_plan »
../library/libBasic.o : Dans la fonction « libUSTG::FFT_2d_fwd(float (*) 
[2], float (*) [2], int, int) » :

As primeiras mensagens são sobre a má ligação da biblioteca fftw, acho que se esse problema for resolvido, pode ser fácil resolver o resto dos problemas.

Eu realmente aprecio sua ajuda.

Obrigado antecipadamente

    
por mja 27.10.2017 / 08:18

0 respostas