所以我无法让简单的Makefile工作。继承人我所拥有的:
proj : driver.o
icc -g -O3 -openmp driver.o -o proj
driver.o : driver.c driver.h
icc -g -O3 -openmp driver.c
我觉得这很直接。 Proj仅依赖于driver.o,而driver依赖于driver.c和driver.h。运行时,编译器在driver.c文件的include中失败,并且“无法打开源文件”driver.h“'。我错过了什么?
答案 0 :(得分:3)
您应该为icc
提供一个-I.
选项,以便在当前目录中查找包含文件。
icc -I. -c -g -O3 -openmp driver.c
(我冒昧地添加-c
标志以防止链接。)
答案 1 :(得分:2)
假设您从所有源文件和标头所在的目录运行make
,请确保在include指令中使用引号:
#include "driver.h"
......而不是:
#include <driver.h>
后者会搜索系统包含路径(你必须像larsmans建议的那样将当前目录添加到该路径)。
答案 2 :(得分:1)
是否在正确的文件夹中?您编译的方式也可能需要在命令行中添加-c
来编译driver.o
,而不是尝试创建一个完整的exectuable(仅用于gcc,因此可能不需要)。 / p>
除此之外(并且可能添加-I
旗帜larsmans提到我看不到任何其他问题。