我们在编写的程序的时候,为了复用会封装一些方法,这样就涉及到多个文件的编译,如何编译这些不同的文件,并链接成最后的可执行程序,如何管理这些文件,一次编译?
编写math.h 头文件
/*--===------------------------------------------===---
filename: math.h
实现简单的文件操作
--===------------------------------------------===---*/
extern int add(int i, int j);
filename: math.h
实现简单的文件操作
--===------------------------------------------===---*/
extern int add(int i, int j);
编写math.c文件
/*--===------------------------------------------===---
filename: math.c
实现 math.h 文件里面定义的方法
编译方法:gcc -c math.c -o math.o
--===------------------------------------------===---*/
int add(int i, int j)
{
return i+j;
}
filename: math.c
实现 math.h 文件里面定义的方法
编译方法:gcc -c math.c -o math.o
--===------------------------------------------===---*/
int add(int i, int j)
{
return i+j;
}
编写main.c程序
/*--===------------------------------------------===---
filename: main.c
主程序,测试 math.h 和 math.c 文件。
编译方法:gcc -c main.c -o main.o
--===------------------------------------------===---*/
#include "math.h"
#include <stdio.h>
int main(int argc, int argv)
{
printf("the sum 3+5=%d.\n",add(3,5));
return 0;
}
filename: main.c
主程序,测试 math.h 和 math.c 文件。
编译方法:gcc -c main.c -o main.o
--===------------------------------------------===---*/
#include "math.h"
#include <stdio.h>
int main(int argc, int argv)
{
printf("the sum 3+5=%d.\n",add(3,5));
return 0;
}
最后,通过 gcc main.o math.o -o main 生成main程序。
xumh@ubuntu:~/cpp/make$ cat makefile
main: main.o math.o
gcc main.o math.o -o main
main.o : main.c math.h
gcc -c main.c -o main.o
math.o : math.c math.h
gcc -c math.c -o math.o
clean:
rm -f *.o
xumh@ubuntu:~/cpp/make$