2013-02-17 8 views
1

все, я составлял программу C с OpenMP. Это мой первый раз использовать make-файл. Когда выдается «make», gcc сообщает об ошибке: * Нет правила для создания цели omp.h', needed by smooth.o '. Стоп. Однако omp.h находится в /usr/lib/gcc/i686-linux-gnu/4.6/include/omp.h, мне интересно, как его исправить. Может ли кто-нибудь мне помочь? Спасибо.makefile error: make: *** Нет правила для создания цели `omp.h '; с OpenMP

CC=gcc 
CFLAGS = -fopenmp 

all: smooth 

smooth: smooth.o ompsooth.o 
    $(CC) $(CFLAGS) -o smooth smooth.o ompsmooth.o 

ompsmooth.o: ompsmooth.c assert.h stdio.h stdlib.h omp.h ompsmooth.h 
    gcc $(CFLAGS) ompsmooth.c 

smooth.o: smooth.c ompsmooth.h omp.h stdio.h stdlib.h string.h sys/types.h sys/stat.h  fcntl.h 
    gcc $(CFLAGS) smooth.c 

clean: 

    rm *.o 
    rm smooth 

ответ

5

Если вы не ожидали ваши стандартные заголовочные файлы для изменения, самым простым решением является просто удалить их из списка (ов) обязательное условие.

Если вы не хотите делать это, вам необходимо указать полный путь до omp.h или использовать механизм VPATH.

+0

Так же, как это ompsmooth.o: ompsmooth.c \t НКУ $ (CFLAGS) ompsmooth.c smooth.o: smooth.c \t НКУ $ (CFLAGS) smooth.c – Robert

+0

, что когда-либо начинали это так или иначе? старые источники Х были еще хуже. – technosaurus

+0

Ты понял. Если файлы заголовков меняются, то make не будет знать, что он должен перестроить ваш источник, но так оно и есть. Различные инструменты сборки знают, как автоматически сканировать ваш файл .c и создавать зависимостей заголовков для вас, но не по умолчанию вы получаете доступ к Linux. Если вы предпочтете получить гун-хо об этом, вы можете найти способ перевернуть руку старого макияжа, чтобы сделать это для вас: http://scottmcpeak.com/autodepend/autodepend.html –

Смежные вопросы