头文件的格式/目的是什么? makefile文件? (C)

时间:2012-03-11 23:19:55

标签: c header makefile

我不清楚makefile中的内容,以及头文件中的内容。

根据我的理解,makefile的格式为:

target: dependencies
        instructions

但这对我不起作用。这正是我所做的:

library: login.o linked.o cipher.o
    gcc -o library login.o linked.o cipher.o

login.o: login.c linked.h
    gcc -c login.c

linked.o: linked.c cipher.h
    gcc -c linked.c

cipher.o: cipher.c
    gcc -c cipher.c

当我在命令行中输入“make makefile”时,编译器会说“make:'makefile'没什么可做的”。我猜我格式错了。另外,库部分是什么?我只是从某个地方复制它。每个makefile都有一个吗?

另外,是否有makefile的扩展名(makefile.txt,makefile.c)?

makefile是否必须命名为makefile?我可以将它命名为taliasmakefile或makefile69或lykeim2freespirited4skool或iwanaBahippie吗?

至于头文件,我找不到任何明确的例子。 您是否包含您希望其他文件能够访问的变量?还是功能原型?

我是C的新手。有人可以向我解释这个我是5岁吗?

3 个答案:

答案 0 :(得分:4)

当您运行make时,它会查找名为Makefile的文件;您不必指定要使用的makefile。没有任何参数,make将(通常)构建文件中的第一个目标。 Makefile不需要扩展名,可以命名为其他东西(但是你必须告诉make在哪里查看)。

头文件用于函数原型,类型和(全局)变量,您需要从放入.c文件的代码中访问这些变量(以及其他一些方便的预处理器#define )。

答案 1 :(得分:1)

构建C软件有两个阶段.....编译和链接。

编译将.C文件转换为目标文件。

链接获取所有这些目标文件并将它们一起存入库或可执行文件。

在编译期间使用头文件...它有关于您应该在链接时找到的内容的信息。 ie ..应该有一个名为X的函数,应该有一个名为Y的变量等等。或者它定义了一些东西,因此它们在几个C文件中是通用的。例如MAX_WIDGETS。也就是说,这是一个.c文件使用在另一个.c文件中实现的东西的方法,或者定义.c文件中常见的东西。

Makefile是关于如何获取.h .c并通过编译然后链接以及您想要对这些文件执行的任何其他转换来运行它们。

答案 2 :(得分:0)

makefile没什么问题,但是没有名为“makefile”的目标。使用-f选项选择文件:make -f makefile。但是你不需要它,因为你的文件有一个标准名称(Makefile,makefile,...)。