c语言makefile编写实例

  • 格式:docx
  • 大小:3.75 KB
  • 文档页数:5

c语言makefile编写实例

Makefile是用来管理程序编译的工具,可以方便地管理程序的编译过程。使用Makefile可以大大简化程序的编译过程,提高程序的可维护性。

Makefile的语法比较简单,主要由目标、依赖和命令三部分组成。下面我们以一个简单的C程序为例,来介绍如何使用Makefile进行编译。

假设我们有一个名为hello.c的程序,代码如下:

```c

#include

int main()

{

printf("Hello, world!\n");

return 0;

}

```

我们需要使用gcc编译器将其编译成可执行文件。下面是一个简单的Makefile:

```makefile hello: hello.c

gcc -o hello hello.c

```

这个Makefile很简单,它定义了一个名为hello的目标,该目标依赖于hello.c文件,并使用gcc命令将其编译成可执行文件。如果我们在终端中输入make命令,Makefile会自动执行编译过程:

```

$ make

gcc -o hello hello.c

```

Makefile还可以定义多个目标,每个目标可以有多个依赖和多个命令。下面是一个稍微复杂一些的Makefile:

```makefile

CC=gcc

CFLAGS=-Wall -g

all: hello goodbye

hello: hello.o

$(CC) $(CFLAGS) -o hello hello.o

goodbye: goodbye.o

$(CC) $(CFLAGS) -o goodbye goodbye.o

hello.o: hello.c

$(CC) $(CFLAGS) -c hello.c

goodbye.o: goodbye.c

$(CC) $(CFLAGS) -c goodbye.c

clean:

rm -f *.o hello goodbye

```

这个Makefile定义了两个目标:all和clean。其中all目标依赖于hello和goodbye两个目标,而hello和goodbye这两个目标又分别依赖于hello.c、goodbye.c和对应的目标文件hello.o、goodbye.o。clean目标用于清除编译生成的目标文件和可执行文件。

在这个Makefile中,我们还定义了两个变量:CC和CFLAGS。CC变量指定了编译器的名称,CFLAGS变量指定了编译器的选项,包括开启所有警告(-Wall)和生成调试信息(-g)。

在使用Makefile编译程序时,可以使用make命令来执行编译过程。如果我们想要生成所有目标文件和可执行文件,可以执行如下命令:

```

$ make all

gcc -Wall -g -c hello.c

gcc -Wall -g -o hello hello.o

gcc -Wall -g -c goodbye.c

gcc -Wall -g -o goodbye goodbye.o

```

如果我们只想生成hello可执行文件,可以执行如下命令:

```

$ make hello

gcc -Wall -g -c hello.c

gcc -Wall -g -o hello hello.o

```

如果我们想清除所有目标文件和可执行文件,可以执行如下命令:

```

$ make clean

rm -f *.o hello goodbye

```

通过Makefile,我们可以方便地管理程序的编译过程,提高程序的可维护性。Makefile的语法简单,但是可以通过定义变量、函数和条件语句等方式实现更复杂的编译过程。掌握Makefile对于程序员来说是非常必要的技能。