Прямо в точку:Где находится файл nvcc place .o? Они появляются в том каталоге, когда я компилирую
У меня есть следующая структура файла:
- MAPA: Makefile, main.c, step.cu, step.h, mapB
- mapB: model.cu, model.cuh, model_init.c, model_init.h
компилировать эту структуру следующим Makefile, с помощью команды "грим MODEL = mapB ":
MODELDIR := ./$(MODEL)
MODULES := $(MODELDIR)
CFLAGS += -I. $(patsubst %,-I%,$(MODULES))
NVCFLAGS += -I. $(patsubst %,-I%,$(MODULES))
NVCC += nvcc
NVCFLAGS += -arch=sm_30 --ptxas-options=-O1
CFLAGS += -Wall -pedantic
LDLIBS += -lz -lpthread
CFLAGS += -g
SRCS += step.cu $(MODELDIR)/model.cu $(MODELDIR)/model_init.c \
main.c
OBJS += step.o $(MODELDIR)/model.o $(MODELDIR)/model_init.o
all: .depend runmodel
dims.h: gen_dims.sh
./gen_dims.sh 1024 1024
runmodel: ${OBJS} main.o
${NVCC} ${NVCFLAGS} ${LDLIBS} $^ -o [email protected]
%.o: %.cu
${NVCC} ${NVCFLAGS} -dc $<
.PHONY: depend clean test
depend:
${NVCC} ${NVCFLAGS} -M ${SRCS} > .depend
.depend: ${SRCS} makefile dims.h
${NVCC} ${NVCFLAGS} -M ${SRCS} > .depend
clean:
${RM} ${OBJS} runmodel compare *.cmo *.cmx *.cmi *.o
include .depend
Это дает nvlink ошибку, а именно" nvlink фатальное: Не удалось открыть входной файл «mapB/model.o"
Я смотрел на то, где .o файлы размещены и моя структура файла с .o-файлов, созданных с этим Makefile выглядит следующим образом:
- MAPA: Makefile, main.c, main.o, step.cu, step.o, step.h, model.o, mapB
- mapB: model.cu, model.cuh, model_init.c, model_init.o, model_init.h
Есть ли кто-нибудь, что имеет представление о том, почему появляется файл model.o в верхнем каталоге вместо в подпапке, которая делает это позже в процессе компиляции, ее невозможно найти?
Решение для решения этой проблемы также будет приветствоваться.
из которых каталога компилятор время вызывается? По умолчанию большинство (все?) Компиляторов помещают объектные файлы в * текущий * каталог. – njuffa
Я не понимаю ваш вопрос. Из взгляда вашего Makefile nvcc испускает файлы onject именно там, где вы его просите. – talonmies
Я не могу воспроизвести вашу ошибку. Какую версию Make вы используете? И какую команду вы видите, когда она создает 'model.o'? – Beta