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