【问题标题】:Can someone show me how to create this very simple makefile?有人可以告诉我如何创建这个非常简单的makefile吗?
【发布时间】:2011-05-16 23:42:58
【问题描述】:

这是用 C 语言编写的,我正在通过 Putty 运行 UNIX,并希望创建一个 Makefile。

所以我有一个程序,它只在一个文件“recommender.c”中,我需要制作一个生成文件,使用 all 函数创建一个名为推荐程序的可执行文件。我不知道该怎么做的部分是我使用行 gcc Recommendationer.c -std=gnu99 编译推荐器.c 我不知道如何确保它也执行 -std=gun99 部分。请帮忙? :)

【问题讨论】:

    标签: c unix gcc makefile


    【解决方案1】:
    CFLAGS=-std=gnu99 -Wall -Wextra -O3
    
    all: recommender
    
    recommender: recommender.o
    

    请注意,文件扩展名必须为.c,如果扩展名为.cpp,则需要CXXFLAGS 而不是CFLAGS

    一些解释:

    make 文件是基于依赖的,正如您所见,您可以在 make 文件之上设置变量。然后当make程序被调用时,它会在当前目录中搜索Makefile

    由于默认操作是all,它将搜索所有规则。 当它找到 all 规则时,它将检查在这种情况下需要哪些依赖项 recommender 规则/文件,因此它会再次开始搜索规则并发现它需要 recommender.o 规则/文件,但它不会找到任何,现在这就是魔法发生的地方。

    make 足够聪明,可以知道 .o(对象)文件是由 .c 或 .cpp(源)文件创建的,因此现在它将开始在当前目录中搜索源文件。他通过用.c 替换.o 来做到这一点,如果它找到文件,它将使用gcc 编译器对其进行编译,如果它在哪里找到.cpp 文件,它将使用g++ 编译器对其进行编译。

    所以现在我们知道了,我们可以通过添加更多目标文件作为依赖项来简单地将多个源文件添加到项目中。

    现在你真的不需要先创建一个目标文件,因为你从一个源文件编译你也可以删除recommender: recommender.o规则,make会尝试通过编译recommender.c或@来创建recommender应用程序987654338@

    【讨论】:

      【解决方案2】:

      你甚至不需要生成文件; CFLAGS="-std=gnu99" make recommender 应该“正常工作”。

      【讨论】:

      • 但是Makefile 对于永远不会忘记CFLAGS 很有帮助。 :)
      • 还不如手动输入编译命令;你甚至不需要 make 。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多