参考:《linux程序设计(第四版)》
本文的编写从简单到复杂,一步一步完成Makefile文件的编写和完善。首先看一下我们的程序有哪些文件:
文件内的程序也很简单,就是输出该文件已经被调用,代码如下:
void funcPrintf(void)
{
printf("------ func.c ------\n");
}
如果我们想要编译一个文件,首先想到的是在shell 下执行gcc命令,那么我们先通过几个shell脚本来实现文件的编译。
#! /bin/bash
set -ev
gcc -o myApp main.c func.c func.h
echo "bulid successful!"
下面是执行结果,编译生成了myApp,程序包含了main.c 和 func.c ,运行程序后打印在了终端上。
实际上我们是执行了gcc -o myApp main.c func.c func.h命令完成了程序的编译,那么我们看一下如何用Makefile文件来完成这个操作。
myApp: main.c func.o
gcc -o myApp main.c func.o
func.o: func.h func.c
gcc -c func.h func.c
我们分解了一步,提出了一个func.o 进行单独编译。其实完全可以写成下面的样子。
myApp: main.c func.h func.c
gcc -o myApp main.c func.h func.c
然后我们在Makefile文件所在目录执行make命令即可完成编译。