linux工具gcc/g++/gdb/git的使用

目录

gcc/g++

 基本概念

指令集

函数库 (重要)

gdb使用 

基本概念 

指令集 

项目自动化构建工具make/makefile

进度条小程序 

​编辑

git三板斧

 创建仓库

git add 

git commit 

git push 

git status

git log 


gcc/g++

 基本概念

gcc/g++称为编译器

进行四个过程:

 预处理:头文件展开,去注释,条件编译,宏替换等等操作

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

 汇编:将汇编代码转换成机器码

 链接:生成可执行文件或库文件

指令集

-o +文件:输出到该文件

-static:采用静态链接 

-g:生成调试信息 

gcc -E :文件预处理完毕后,不进行编译。该指令不生产文件,需要-o指令将文件内容输出到指定文件中。

gcc -S:文件编译完毕后,不进行汇编。生成文件后缀.s

gcc -c:文件汇编后,不进行链接。生成文件后缀.o

gcc +文件  -o 文件名:对文件执行这四个过程 -o指令:指定可执行程序名 

linux工具gcc/g++/gdb/git的使用_第1张图片 

当然我们编译一个程序时,不必使用-E,-S,-c这些指令。

只需要gcc 文件 -o 指定文件名 即可完成  

函数库 (重要)

 c程序当中,如果要使用一个函数,不仅需要函数声明,还需要定义,但是我们所包含的头文件stdio.h当中,只有printf函数的声明,没有其定义,但是我们却可以完成调用?为什么呢?

这是因为系统把c函数的定义都放到libc.so.6这个库当中了,gcc会到默认的/usr/lib路径下进行查找,找到函数定义,这也就是动态链接过程。

函数库分为静态库和动态库,一般以.so结尾为动态库,.a结尾为静态库。 

 静态链接是指编译链接时把库文件代码全部拷贝到该文件,生成的文件比较大。

动态链接是指程序运行时链接库,到库中找到函数定义,然后完成调用。

gcc默认生成的文件是动态链接的。

 

gdb使用 

基本概念 

 gdb是linux下的调试器。

如果要对一个程序进行调试,在编译时一定要使用-g指令加入调试信息。

因为一般默认生成的程序是release版本,不支持调试。 

指令集 

  • list 或 l +行号或函数名:显示源代码,接着上次的位置每次列10行,如果是函数则从函数入口显示。
  • r或run :运行程序  
  • n或next:单条代码执行,相当于vs当中的f10,不进入函数。  
  • s或step:相当于vs当中f11,可以进入函数内部。 
  •  break或b+行号:在改行设置断点
  • break+函数名:在函数入口设置断点
  • info b:查看断点信息
  • finish:直接执行完改函数,然后停下来等待命令
  • continue:跳到下一个断点
  • until+n:一般在函数内部使用,跳到指定行
  • p+变量:打印变量值
  • display+变量名:追踪变量,每次停下来都显示该变量值
  • undisplay+变量号:取消对变量追踪
  • delete b:删除所有断点
  • delete b +n :删除n号断点
  • disable b n :禁用n号断点
  • enable b n:启用n号断点
  • bt:查看各级函数调用
  • set var :修改变量值
  • info locals:查看当前栈帧内局部变量值
  • print(p):打印表达式的值,通过表达式可以修改变量值或调用函数

项目自动化构建工具make/makefile

 make是指令,而makefile是文件。

通过make和makfile可以实现项目自动化编译,极大提高效率。

实例:

makefile内部:1.依赖关系

                         2.依赖方法 

linux工具gcc/g++/gdb/git的使用_第2张图片 

 linux工具gcc/g++/gdb/git的使用_第3张图片

  • make会在当前目录下找名为“makefile”或”Makefile“的文件 
  • make找到的是第一个目标文件,也就是test,如果test不存在,那它就会根据依赖关系和依赖方法去创建这个目标文件。
  • make会一层一层找依赖关系,直到编译出第一个目标文件
  • 找寻过程中,如果被依赖文件找不到,那么make直接退出,并报错,而对于所定义的命令错误,或者编译不成功,make不管。
  • make成功生成目标文件后,如果目标文件所依赖的文件内容没有改变,此时又进行make,那么该make是不被执行的。
  • 用.PHONY修饰的文件称为伪目标,该目标与第一个目标文件没有直接或间接关联,该目标总是可以被执行的。

进度条小程序 

linux工具gcc/g++/gdb/git的使用_第4张图片

linux工具gcc/g++/gdb/git的使用_第5张图片 

git三板斧

 创建仓库

指令:git clone +gitee仓库的https 

git add 

将你要添加的文件先复制到仓库目录中。

然后进入仓库使用git add +文件名

git commit 

git commit -m “日志信息”   +文件   注意:日志信息一定要有 

git push 

commit完毕后,使用git push指令,然后代码就提交到gitee仓库了 

git status

 该指令用于查看git状态。

git log 

 查看git日志信息。

 

你可能感兴趣的:(git,linux,运维,centos)