一、引言
从我们刚开始编写一个简单的C/C++ "Hello,World!",到将其编译、运行处结果—这部分工作IDE(集成开发环境)帮我们做了,包括语法错误检查,编译,调试,执行二进制程序。大部分时间我们只关注程序代码本身的编写,如何在Linux下对C/C++源代码的 进行有效管理,包括编译、链接、调试,make工具可以帮助我们完成这部分的工作。
二、从“Hello,World”说起
1、执行单个源文件
一个编写好的C或C++代码源程序需要通过编译、链接等步骤才能生成可执行的二进制文件。
例如:源文件:hello_world.c的源码为:
[1] 第一步:编译生成目标文件 hello_world.o (gcc -c hello_world.c )
[2] 第二步:链接(这里只有一个hello_world.o)生成可执行文件hello_world(gcc -o hello_world hello_world.o)
2、编译多个源文件
例如:源文件:hello_world.c say_ok.c 和main.c的源程序代码为:
需要对包含这个三个源程序文件项目生成可执行文件main
[1] 生成目标对象文件(OBJ):
[2] 链接生成可执行文件main:
三、管理多个源程序文件
通常我们在编写项目的时候不可能只有一个源文件程序(main.c/main.cpp),一般情况下会有多个源文件(.c/.cpp)和头文件需要管理。正如前面所描述的如果有三个源文件hello_world.c, say_ok.c, main1.c,每次当我们对源码修改过后,都必须重新运行一遍所有的编译命令,试 想一 下如果文件不止三个,而是有很多个的时候......这将对程序员无疑是一个灾难。所以,我们必须寻求一个有效的的程序源码管理方式—make机制可以帮助我们解决这个问题。
1、make
make命令是系统管理员和程序员用的最频繁的命令之一。管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题。
2、makefile文件书写格式
目标:原料
<Tab>加工方法
3、makefile实例
4、make常用选项
[1]-B 选项: make 命令不会编译那些自从上次编译之后就没有更改的文件,但是,如果你想覆盖 make 这种默认的行为,可以使用-B选项
[2]-g选项:调试选项,用于GDB调试
[3]clean: 清除所有当前的对象文件好和执行文件