Linux开发工具,gcc/g++,makefile文件
gcc/g++
编译器:gcc/g++
gcc------>c 语言
g++----->c++
编译一个程序需要经历四个过程
1.预处理
1.1宏替换
1.2头文件展开
1.3去注释
1.4条件编译
gcc/g++ -E [要编译的文件名字] -o [编译后的文件名字].i
⒉编译
1.语法语义的检查
gcc -S [要编译的文件名字] -o [编译后的文件名字].s
将源代码转化为汇编代码
3.汇编
将汇编代码转化为机器代码(二进制代码)
gcc -c [要编译的文件名字] -o [编译后的文件名字].o
4.链接
用目标文件+库文件生成可执行程序
4.1静态链接
-static
gcc/g++命令行当中,需要增加一个参数:-static
4.2动态连接
默认就是动态连接的。
gdb
1.debug&release ==> -g命令行选项
加 -g是debug版本
3.调试的选项
l (list):查看文件内容。
断点相关
r (run):程序运行起来。
b 行号 :打断点。
i b :查看断点信息。
disable [断点序号]︰使断点失效。
enable[断点序号]:使断点生效。
n(next):逐过程执行--》win : F10。
s(step):逐语句执行--》win : F11。
p[变量名称]:打印变量的值,print
bt(back trace):查看调用堆栈
where(与bt 一样)
make & makefile
1.make & makefile的解释
2.makefile文件书写的规则
1.make是解释器,解释makefile文件。makefile是书写编译规则的文件。
2.make解释makefile文件,可以自动化构建项目,自动化生成可执行程序。
2.1目标对象&依赖对象&编译命令
2.2 make的解释makefile文件的规则
a.make会在当前目录下找名字叫“Makefile”或“makefile”的文件
b.永远只为生成第一个目标对象而服务
解答:makefile在解释makefile文件时时自顶向下,当我能遇到生成的目标对象时,是不会往后解释的
c.若目标对象相对于依赖对象而言,较新,则不生成,否则继续生成。
d.make在生成第一个目标对象的时候,如果依赖对象也需要后续生成,则先生成依赖对象之后,使用依赖对象生成目标对象。
答:当依赖对象不存在时,会向下找生成依赖对象的方法,并且另一个方法的依赖对象存在,生成目标对象,返回第一目标对象。
2.3伪目标(清理当前工程内容的时候)
.PHONY:目标对象
目标对象:
执行命令
(make 伪目标对象的名字)