创建模块化 Makefile

CBeginner
立即练习

介绍

在本次挑战中,你将学习如何创建一个基础的 Makefile 来编译一个简单的 C 程序。你将理解 Makefile 如何帮助自动化构建过程以及管理多个源文件。

这是一个「挑战」项目,它与「引导实验」不同,你需要尝试独立完成挑战任务,而不是按照实验步骤一步步学习。挑战通常具有一定的难度。如果你觉得困难,可以与 Labby 讨论或查看解决方案。历史数据显示,这是一个 初学者 级别的挑战,通过率为 98%。它在学习者中获得了 95% 的好评率。

创建基础 Makefile

在本次挑战中,你将创建一个基础的 Makefile 来编译一个简单的 C 程序。该程序由两个源文件组成:hello.cutils.c。其中 hello.c 文件包含主函数,用于向控制台打印消息;utils.c 文件包含一个由主函数调用的工具函数。

任务

  • 创建一个用于编译程序的 Makefile
  • 添加编译这两个源文件的规则
  • 添加一个 clean 目标来清理编译生成的文件

要求

  • 使用 ~/project 目录下提供的源文件
  • Makefile 必须同时编译 hello.cutils.c
  • 生成的可执行文件命名为 hello
  • 包含一个 clean 目标
  • 使用 GCC 作为编译器

示例

运行以下命令来编译程序:

cd ~/project
make
gcc -c hello.c
gcc -c utils.c
gcc hello.o utils.o -o hello

运行编译后的程序:

./hello

程序输出示例:

Hello, World!
Utility function called!

运行程序后,请清理编译生成的文件。

提示

  • 请务必记住在 Makefile 中使用制表符(TAB)进行缩进
  • 使用 -c 标志将源文件编译为目标文件(Object Files)
  • 编译完成后测试程序是否运行正常
✨ 查看解决方案并练习

总结

本次挑战带你入门了 Makefile 的基础创建方法。你学习了如何编写一个简单的 Makefile 来编译多个源文件、创建可执行文件以及清理构建产物。这些是管理 C 语言编程项目的基础技能。