Makefile包含头文件

我是Linux编程新手我试图编译一个简单的测试结构。 但是我在编译时遇到错误。 添加inc.c(在app:行中)也不起作用。 我该如何包含正确的文件?

Makefile文件:

app: main.c inc.h cc -o app main.c 

终奌站:

 make cc -o app main.c /tmp/ccGgdRNy.o: In function `main': main.c:(.text+0x14): undefined reference to `test' collect2: error: ld returned 1 exit status make: *** [app] Error 1 

main.c中:

 #include  #include "inc.h" int main() { printf("Kijken of deze **** werkt:\n"); test(); getchar(); return 0; } 

英寸

 #ifndef INCLUDE_H #define INCLUDE_H void test(); #endif 

inc.c

 #include  void test() { printf("Blijkbaar wel!"); } 

您必须通过编译inc.c来链接您获得的编译单元inc.o

通常,这意味着您必须提供包含main.c中使用的函数的所有目标文件(可传递)。 您可以使用隐式make规则编译这些规则,无需指定额外规则。

你可以说:

 app: main.c inc.o inc.h cc -o app inc.o main.c 

并且make将自己知道如何从inc.c编译inc.o ,虽然在确定是否必须重建inc.o不会考虑inc.h 为此,您必须指定自己的规则。

你没有编译inc.c文件

 app: main.c inc.h cc -o app main.c inc.c 

您还需要编译inc.c 一种合适的方法(更好地扩展到更大的应用程序)将Makefile分成不同的目标。 这个想法是:每个目标文件一个目标,然后是最终二进制文件的一个目标。 要编译目标文件,请使用-c参数。

 app: main.o inc.o cc -o app main.o inc.o main.o: main.c inc.h cc -c main.c inc.h inc.o: inc.c inc.h cc -c inc.c inc.h