Linux常用工具—02

Linux常用工具—02

编译器-gcc/g++

通常我们所写的c语言程序是一种高级的语言程序,这些程序cpu是无法直接识别的,需要编译器将我们所写的代码解释为机器指令之后才能执行。

1.编译过程

预处理:展开头文件、宏替换、去掉注释、条件编译

gcc -E test.c -o test.i

编译:检查语法,生成汇编代码

gcc -S test.i -o test.s

汇编:汇编代码转成二进制机器码

gcc -c test.s -o test.o

链接:将两个目标文件链接到一起

gcc test.o -o test
2.链接方式

动态链接:在连接时在可执行程序中记录库中函数符号信息表,并没有将具体函数的实现代码写入到可执行程序中,一次在以后运行这个程序时需要将库函数也加载到内存中,但是在内存中多个程序可以使用一个库(节省资源)。

静态链接:在链接函数库文件生成可执行程序的时候,直接将库中的代码实现写入到可执行程序中,生成的代码会比较大一点,但是运行的时候不需要依赖于库的存在。

gcc中默认的链接方式就是动态链接。

调试器-gdb
1.调试前提

程序调试的前提:生成一个debug版本的程序,程序中添加了调试符号信息。

在Linux下gcc编译器默认生成的是release版本的程序,不包含调试符号信息,无法调试。

因此在编译程序的时候需要增加gcc -g选项,表示生成debug版本的程序。

2.调试命令
gcc -g test.c -o test	//生成dubug版本的程序
gdb test	//对test进行调试
run		//程序直接开始运行
start	//开始逐步调试
list 5		list funcname	//查看指定文件行/函数附近的代码
step	//下一步,若当前调试位置是一个函数,则会进入函数
next	//下一步,直接运行这一行函数
until 12	//直接运行到指定文件的指定行
continue	//从当前位置继续运行
break 5 	break funcname	//打断点
info break	//查看断点信息
delete		//删除断点
watch variblename	//变量监控,当变量内容发生变化则停下来
backtrace	//查看程序运行信息中的函数调用栈
quit	//退出调试
项目自动化构建工具-make/Makefile

Makefile:是一个普通的文本文件,在这个文件中可以遍历整个项目的编译流程规则

make:是一个Makefile解释程序,当前命令行下输入make,这时候这个解释程序会到当前路径下寻找名字叫做Makefile的文件,对其内部的内容进行解释执行。

示例:Makefile
test:test.o
	gcc test.o -o test
test.o:test.s
	gcc -c test.s -o test.o
test.s:test.i
	gcc -S test.i -o test.s
test.i:test.c
	gcc -E test.c -o test.i

上面的文件中test依赖test.o,test.o依赖于test.s,test.s依赖于test.i,test.i依赖于test.c。

预定义变量
main:main.o child.o

$<:依赖对象中的第一个对象文件 main.o

$^:所有依赖对象 mian.o child.o

$@:目标对象 main

伪声明对象:不管对象是否更新,每次都重新生成。

.PHONY:clean

项目版本管理工具-git
git clone	//克隆远程服务器上的git仓库
git add ./*		//添加本次修改的文件信息
git push	//同步本地版本到git服务器
git push origin master	//同步到服务器的master主分支
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值