获得一个简单的Makefile工作

时间:2011-05-30 13:35:32

标签: c makefile

所以我无法让简单的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“'。我错过了什么?

3 个答案:

答案 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提到我看不到任何其他问题。