【问题标题】:what is the format/purpose of header files & makefiles? (C)头文件和生成文件的格式/用途是什么? (C)
【发布时间】:2012-03-11 23:19:54
【问题描述】:

我不清楚 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: Nothing to be done for `makefile'”。我猜我格式不对。另外,图书馆部分是做什么用的?我只是从某个地方复制它。每个makefile都有一个吗?

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

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

至于头文件,我找不到任何明确的例子来说明它们的具体内容。 您是否包含您希望其他文件能够访问的变量?还是函数原型?

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

【问题讨论】:

  • 您确定使用制表符来缩进说明而不是空格吗?使用选项卡执行此操作至关重要。
  • Makefile 与 C 完全正交。它们只是用于将 C 源代码自动编译到应用程序中的常用工具。如果您想了解头文件的工作原理,我建议您获取a good book

标签: c header makefile


【解决方案1】:

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

头文件用于函数原型、类型和(全局)变量,您需要从放在.c 文件中的代码访问它们(加上一些其他的东西,如派上用场的预处理器#defines)。

【讨论】:

    【解决方案2】:

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

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

    链接获取所有这些目标文件并将它们组合成一个库或可执行文件。

    在编译期间使用头文件...它包含有关您应该在链接时找到的信息。即..应该有一个叫做X的函数,应该有一个叫做Y的变量,等等......或者它定义了一些东西,所以它们在几个C文件中是通用的。例如 MAX_WIDGETS。即,它是一个 .c 文件使用在另一个 .c 文件中实现的东西或定义跨 .c 文件通用的东西的一种方式。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        • 2018-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-25
        相关资源
        最近更新 更多