C 如何创建一个简单的makefile?
我有三个文件:main.c、foo.c和foo.h。我想知道如何使最简单的makefile成为可能?我以前从未制作过makefile,我所做的一切都只是给了我错误。另外,文件应该是什么类型的扩展名?目前我已将其保存为makefile.c 谢谢 我试过这个:C 如何创建一个简单的makefile?,c,makefile,C,Makefile,我有三个文件:main.c、foo.c和foo.h。我想知道如何使最简单的makefile成为可能?我以前从未制作过makefile,我所做的一切都只是给了我错误。另外,文件应该是什么类型的扩展名?目前我已将其保存为makefile.c 谢谢 我试过这个: all: main.c foo.c gcc main.c foo.c -o main 当我使用make命令时,会出现大量错误。满足您需要的简单Makefile如下 obj-m:=main.o foo.o 并将其保存为没有扩展名的M
all: main.c foo.c
gcc main.c foo.c -o main
当我使用make命令时,会出现大量错误。满足您需要的简单Makefile如下
obj-m:=main.o foo.o
并将其保存为没有扩展名的
Makefile
,因为make文件不能有任何扩展名我可能会写这样的东西(我不是100%掌握所有隐式规则,所以我只是保持简单):
确保命令部分缩进了制表符,而不是空格。在某些编辑器中(在某些配置中),必须键入ctrl+V,然后键入TAB
另存为不带扩展名的
makefile
。在这样一个干净的设置中,您根本不需要makefile–如果您使用。只需调用makepp-main
(不覆盖任何内置规则)将发送它寻找用于构建它的源代码,如main.cpp
或在您的情况下main.c
。它将扫描它的#include
语句,并在每次include发生显著变化时(即,不仅仅是轻微的重新格式化或注释变化)重新生成
整洁的东西是,在链接时,它将把标题视为链接在任何匹配模块中的提示,在你的例子中<>代码> fo.o < />代码>它将从<代码> fo.c<代码>中建立。这是递归的,如果说“代码> fo.c<代码>包含<代码> bar .h < /代码>,它也会考虑<代码> bar .o>代码>链接。
还有很多事情要做。除了做GNU make所能做的几乎所有事情外,还有很多有用的事情,您甚至可以通过一些Perl编程来扩展您的make文件。显然不是这样……请查阅GNU make howto。它有很多例子。@Robert:“一大堆错误”不是对问题的有用描述。什么错误?谢谢,问题出在扩展名上make file没有扩展名..我用过so manu Makefile但没有扩展名..Makefile示例不正确。如果您试图使用内核构建系统构建一个内核模块,这将很好,但是作为一个独立的makefile.BTW,它不会做任何事情,当然makefile可以有扩展名。Makefiles可以根据需要命名。但是,默认情况下,
make
程序只会查找某些名称:通常是Makefile
和Makefile
(某些版本也会查找其他版本)。如果你想使用非标准名称,你必须告诉make
它是什么,使用-f
选项:make-f MyMakefile.mk
这是不对的。如果您的main
程序不存在,您将得到一个错误,即没有生成main
.Oops的规则。谢谢我会修好的。。。完成。
all: main # all depends on the program (put it first so `make` == `make all`)
main: main.o foo.o # main depends on its objects
gcc main.o foo.o -o main # create the program by linking the object files
foo.o: foo.c foo.h # the foo object depends on its .c and .h files
# the main object implicitly depends on its .c file