浅谈makefile
时间:2010-05-29 来源:chinawanglun
因此将含有多个文件的工程编译成可执行的文件就有两种方式:命令行操作,手动输入将源文件编译成目标文件;
或是,编写makefile文件,通过make工具将多个文件编译为可执行文件
下面我将通过一个简单的例子来将这两种方式进行简单的说明和对比:
在我的makefile_test工程下有四个目录:add,sub,build,bin和一个文件:main.c
add中的add_int.c和add_float.c分别用来计算整型和浮点型数加法,以及add.h文件
add_int.c
/*add_int.c*/ |
add_float.c
/*add_float.c*/ |
add.h
#ifndef __ADD_H__ |
sub中的sub_int.c和sub_float.c分别用来计算整型和浮点型数减法,和声明函数的sub.h文件
sub_int.c
/* sub_int.c */ |
sub_float.c
/* sub_float.c*/ |
makefile_test目录下sub.h
/*sub.h*/ |
main.c
#include <stdio.h> |
以上是所有代码。
下面采用手动输入方式来编译工程的方式:
gcc -c add/add_int.c -o build/add_int.o // 生成目标文件
gcc -c add/add_float.c -o build/add_float.o //
gcc -c sub/sub_int.c -o build/sub_int.o
gcc -c sub/sub_float.c -o build/sub_float.o
gcc main.c -o build/main.o
gcc build/* -o bin/main //生成可执行文件
进入bin目录下
./main //运行
采用这种方式虽然也可以编程成功,并且生成可执行文件,运行可执行文件,并且能得到正确的结果
但是每次编译都要重新输入以上所有命令,这样编译程序将很不方便,并且很容易出错。。
因此以下将采用编写makefile的方式来编译程序
针对这个工程的makefile文件如下:
#生成main “:”左边为目标
main:add_int.o add_float.o sub_int.o sub_float.o main.o |
在命令行输入make命令,将根据makefile中的规则生成最终的可执行文件
采用这种方式来管理和编译工程将很方便。