C语言 add、sub、mul 和 div 程序的 Makefile


什么是 Makefile?

Makefile 是许多编程项目中使用的一个独特文件,它可以通过编译和链接自动生成可执行程序。它提供了关于链接和编译程序的指令,以及源文件依赖项和构建命令的列表。名为 make 的程序读取 Makefile 并运行所需的命令。

Makefile 的一般格式

  • 指定编译器(gcc 用于 C 编程g++ 用于 C++ 编程)。
  • 指定编译器标志。
  • 定义目标可执行文件。
  • 定义默认目标(all)。
  • 将源文件编译并链接到可执行文件。(也可以使用目标文件)。
  • 清理目标以删除可执行文件。

让我们看看 C 语言中加法、减法、乘法和除法程序的 Makefile 示例。

add、sub、mul 和 div 程序的 Makefile

# Compiler to use
CC = gcc

# Compiler flags
CFLAGS = -Wall -g

# Target executable names
TARGETS = add sub mul div

# Default target when running "make"
all: $(TARGETS)

run_add:add
@./add

run_sub:sub
@./sub

run_mul:mul
@./mul

run_div:div
@./div

# Rule for creating the addition program
add: add.c
@$(CC) $(CFLAGS) -o add add.c

# Rule for creating the subtraction program
sub: sub.c
@$(CC) $(CFLAGS) -o sub sub.c

# Rule for creating the multiplication program
mul: mul.c
@$(CC) $(CFLAGS) -o mul mul.c

# Rule for creating the division program
div: div.c
@$(CC) $(CFLAGS) -o div div.c

# Clean up object files and executables
clean:
rm -f $(TARGETS)

Makefile 执行说明

  • CC = gcc:此行将gcc 设置为用于编译 C 程序的编译器。
  • CFLAGS = -Wall -g:在这里,-Wall 启用所有警告,这有助于识别代码中潜在的问题。-g 使用 gdb 等工具生成调试信息。
  • 这里, TARGETS 是一个包含可执行文件名称的变量。稍后我们可以使用$(TARGETS) 来引用所有目标,而不是重复键入每个名称。
  • all: 这是在不带任何特定指令调用 make 时运行的默认目标。
  • add: add.c: 它定义了将add.c 编译成可执行文件add 的规则
    @$(CC) $(CFLAGS) -o add add.c 运行编译器命令,使用gcc 和指定的标志(-Wall -g)创建 add 可执行文件。其他操作与此类似。
  • run_<operation> 允许编译和运行每个程序 run_add 编译 add(如果尚未构建)。 ./add 运行 add 可执行文件。@ 用于抑制输出。其他程序与此类似。
  • clean 目标用于删除已编译的可执行文件。

以下是 C 语言中加法、减法、乘法和除法程序。

程序文件

add.c

#include <stdio.h>
int main() {
  int a, b;
  printf("Enter two integers to add: ");
  scanf("%d %d", &a, &b);
  printf("Sum: %d
", a + b); return 0; }

sub.c

#include <stdio.h>
int main() {
  int a, b;
  printf("Enter two integers to subtract: ");
  scanf("%d %d", &a, &b);
  printf("Difference: %d
", a - b); return 0; }

mul.c

#include <stdio.h>
int main() {
  int a, b;
  printf("Enter two integers to multiply: ");
  scanf("%d %d", &a, &b);
  printf("Product: %d
", a * b); return 0; }

div.c

#include <stdio.h>
int main() {
  int a, b;
  printf("Enter two integers to divide: ");
  scanf("%d %d", &a, &b);
  if (b != 0)
    printf("Quotient: %d
", a / b); else printf("Error: Division by zero.
"); return 0; }

此 Makefile 及其相关程序位于同一个目录下。

运行 make 以执行特定操作。


更新于: 2024年11月12日

19 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告