Makefile Kompilieren Probleme
Dies ist mein makefile
FC=gfortran
CC=gcc
CPC=g++
FFLAGS = -O3
LINK=g++
BLASF=dgemmf.o dgemmkernel2.o mult.o
BLASFSRC=dgemmf.f
TIMER=mytimer.o
TGEMM=tgemm
ALL= $(TGEMM)
LIBS = -lblas
all: $(ALL)
mult.o:
$(CPC) -O3 -fopenmp -c mult.cpp
$(TGEMM): tgemm.o mult.o $(TIMER) $(BLASF)
$(FC) $(FFLAGS) -o $(TGEMM) tgemm.o $(TIMER) $(BLASF) $(LIBS)
dgemmkernel2.o: dgemmkernel2.cpp
$(CPC) -O3 -c -fopenmp dgemmkernel2.cpp
tgemm.o: tgemm.f $(INCLUDE)
$(FC) $(FFLAGS) -c tgemm.f
clean:
rm -rf *.o $(ALL)
Dies ist es, was ich für Fehler:
make -f makefile_gcc2
gfortran -O3 -c tgemm.f
g++ -O3 -fopenmp -c mult.cpp
gcc -c -o mytimer.o mytimer.c
gfortran -O3 -c -o dgemmf.o dgemmf.f
g++ -O3 -c -fopenmp dgemmkernel2.cpp
gfortran -O3 -o tgemm tgemm.o mytimer.o dgemmf.o dgemmkernel2.o mult.o -lblas
dgemmkernel2.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
mult.o: In function `global constructors keyed to main':
mult.cpp:(.text+0x1a): undefined reference to `std::ios_base::Init::Init()'
mult.cpp:(.text+0x29): undefined reference to `std::ios_base::Init::~Init()'
mult.o: In function `_Z4multPdS_iS_iii.omp_fn.0':
mult.cpp:(.text+0x4f): undefined reference to `omp_get_num_threads'
mult.cpp:(.text+0x57): undefined reference to `omp_get_thread_num'
mult.o: In function `mult(double*, double*, int, double*, int, int, int)':
mult.cpp:(.text+0x175): undefined reference to `omp_get_num_threads'
mult.cpp:(.text+0x1b9): undefined reference to `GOMP_parallel_start'
mult.cpp:(.text+0x1c6): undefined reference to `GOMP_parallel_end'
mult.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
make: *** [tgemm] Error 1
Verstehe ich aus meiner Forschung, dass diese wahrscheinlich sind linker-Probleme, aber ich kann nicht für das Leben von mir herauszufinden, was das problem ist. Gibt es jemanden da draußen gibt, die vielleicht einen Einblick in das, was das Problem ist?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die C++ - Quellen zu ermöglichen, sollten Sie mit dem g++ - Programm anstelle von gfortran. Das Gegenteil gilt für den Intel Compiler.
So ändern:
zu
Ich habe ein ähnliches problem, und ich löste es durch die Verknüpfung mit der 'libgomp.dll.eine' Datei -- ich benutze MinGW 4.4.
Oder Sie müssen nur hinzufügen, um die libirary, um die Verknüpfung mit "-lgomp " z.B. LIBS += -lgomp