Я пытаюсь скомпилировать свой проект с помощью Makefile, но так или иначе флаг -fopenmp не будет работать. Вот Makefile:OpenMP Makefile, -fopenmp не работает
TARGET=isaac
CC=g++
CFLAGS=-Wall -O2 -fopenmp
LDFLAGS=-lm -lpthread -lrt
OBJ=src/main.o src/bhtree.o src/body.o src/configreader.o src/diagnostics.o src/output.o src/quad.o src/timing.o src/vector2.o
isaac: $(OBJ)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJ) $(LDFLAGS)
%.o: src/%.cpp
$(CC) $(CFLAGS) -c $<
clean:
rm src/*.o src/*~ isaac
и здесь выход при вызове «сделать»
g++ -c -o src/main.o src/main.cpp
g++ -c -o src/bhtree.o src/bhtree.cpp
g++ -c -o src/body.o src/body.cpp
g++ -c -o src/configreader.o src/configreader.cpp
g++ -c -o src/diagnostics.o src/diagnostics.cpp
g++ -c -o src/output.o src/output.cpp
g++ -c -o src/quad.o src/quad.cpp
g++ -c -o src/timing.o src/timing.cpp
g++ -c -o src/vector2.o src/vector2.cpp
g++ -Wall -O2 -fopenmp -o isaac src/main.o src/bhtree.o src/body.o src/configreader.o src/diagnostics.o src/output.o src/quad.o src/timing.o src/vector2.o -lm -lpthread -lrt
-fopenmp флаг отсутствует, если исходные файлы компилируются, поэтому готовый исполняемый последовательный порт, не параллельны друг другу.
Как это исправить?
'g ++ -Wall -O2 -fopenmp -o isaac', он находится прямо там – OneOfOne
действительно означает' make -j4', чтобы скомпилировать несколько файлов за одно и то же время? – OneOfOne
Но этого не хватает для компиляции исходных файлов, , поэтому все файлы * .o являются серийными, что означает, что флаг не используется , когда соединение выполнено – user2925520