【问题标题】:makefile for C on UNIX [closed]UNIX 上 C 的 makefile [关闭]
【发布时间】:2014-11-01 12:53:03
【问题描述】:

您好,我开始学习 C 和 Unix 编程。但是我真的对makefile感到困惑。我创建了一个简单的 c 程序,它使用 printf (aloha.c) 显示文本行。我应该如何去创建一个makefile?它会是同一目录中的单独 .c 文件还是文本文件?

/*Will output aloha!*/
#include <stdio.h>
int main(void)
{
   printf("Aloha!\n");
   printf("Hello World!\n");
   return 0;
}

【问题讨论】:

  • 请编辑您的问题以包含您的代码。 :)
  • 在我的帖子中添加了代码:o

标签: c unix makefile


【解决方案1】:

正如 paxdiablo 之前回答的那样,这是您可以为 C 文件编写的最简单的 Makefile。但是,Makefile 有更广泛的用途。它们使您能够以非常有条理的方式自动管理和构建您的项目。一个 Makefile 包含一个或多个如下所示的规则:

target: dependencies
[tab] system command

但是,您也可以添加一些变量来简化您的 makefile。有两种类型的变量:递归扩展变量和简单扩展变量。实际上,变量可以表示目录、文件名列表、传递给编译器的选项、要运行的程序……

注意:makefile 中的变量区分大小写,这意味着 CC 和 cc(例如)被认为是不同的!

另一方面,为了创建一个makefile,创建一个文本文件,写入你的内容并将文件名更改为Makefile。

注意:使用“make”时,会直接执行名为“Makefile”的文件,如果你要执行的目录中有另一个Makefile,你应该在前面加上要执行的文件名的 make 命令。

【讨论】:

    【解决方案2】:

    最简单的makefile应该是这样的:

    aloha: aloha.c Makefile
        gcc -o aloha aloha.c
    

    (记住如果是第二行,那是开头的制表符)。一般命名为Makefile,和源码在同一目录下,所以在命令行输入make即可。

    从那里开始,它可能会变得异常复杂,具体取决于您需要如何将不同的对象联系在一起。

    您会注意到我已将 Makefile 本身包含在依赖项列表中 - 所以对 makefile 的任何更改都会重做 一切,因为所有关于必须重新编译的赌注都没有了,重新链接等等。

    【讨论】:

      猜你喜欢
      • 2018-01-06
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      相关资源
      最近更新 更多