迷你的“g++编译器”使用说明书

ulimit -c 1024 // 设定1KB的core dump

gdb [exec] [core file] // 进行core dump调试

 

 

* 程序员软件设计的时候是针对头文件(h)的--所谓的针对接口编程

* 编译器编译的时候是针对实现文件(cpp)的,因为头文件处理后被include进cpp了,等于没有头文件,理论上写代码的时候你也可以不写头文件,

只要你不把符号写错

* 链接器链接的时候是针对目标文件(o, lib)的,其它一概不管。链接的时候,整就是一个平面,没有任何目录级别的特性。

 

 

g++ -c 编译

 

g++ -c x.cpp   编译出目标文件x.o

g++ -c main.cpp 编译出目标文件

 

 

g++ 无参数   链接这些目标文件

 

 

Makefile

--------------------

 

targets : prerequisites

command                     command是命令行,如果其不与“target:prerequisites”在一行,那么,必须以[Tab键]开

 

 

* make 预处理后的结果是生成一棵树,表现出从根节点对叶子节点的依赖。预处理包括:解决include, 解决变量()和环境变量,推导隐晦规则

 

* make 没有参数时,会以第一个tag作为依赖树的根节点。

 

* 最好你的非根tag用object file文件名表示

 

* Makefile通过VPATH来设置文件的include和其它查询路径

 

* 命令前加一个 "-" 前缀表示当这个命令失败时,继续执行其它命令; "@" 前缀表示不在console中打印这条命令

 

* make自已产生的global变量有:SHELL(如/bin/sh)、MAKEFLAGS(开始时为空)、CC、

     MAKELEVEL(由make控制)、CXX(g++)

    OS的环境变量在makefile起global作用,但如果和makefile变量重名,那么以makefile变量为准

    export关键字可以使变量传递到下一级makefile中

    需要给在变量名前加上“$”符号,但最好用小括号“()”或是大括号“{}”把变量给包括起来

    我们还可以为一个target设定局部变量 ,局部变量在target为根的树下都有效

 

* make -f make_file_name  指定Makefile文件名

 

* 隐晦规则:只要给出*.o,而不用指定*.o是怎么编译出来的,留给make去做

 

你可能感兴趣的:(迷你的“g++编译器”使用说明书)