当前位置: 首页 > news >正文

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指令:指定可执行程序名 

 

当然我们编译一个程序时,不必使用-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.依赖方法 

 

 

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

进度条小程序 

 

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日志信息。

 

http://www.lryc.cn/news/59404.html

相关文章:

  • Direct3D 12——纹理——纹理
  • 产品经理必读 | 俞军产品经理十二条军规
  • 【机器视觉1】光源介绍与选择
  • 【三十天精通Vue 3】第十一天 Vue 3 过渡和动画详解
  • 基于多种流量检测引擎识别pcap数据包中的威胁
  • 第02章_变量与运算符
  • 仅三行就能学会数据分析——Sweetviz详解
  • springboot——集成elasticsearch进行搜索并高亮关键词
  • MATLAB绘制局部放大图
  • 第十三天缓存一致性篇
  • VSCode使用Remote SSH远程连接Linux服务器【远程开发】
  • 人工智能专题-知识表示
  • 各种过滤器使用场景
  • 第04章_IDEA的安装与使用(下)
  • 2023年全国最新道路运输从业人员精选真题及答案51
  • Baumer工业相机堡盟工业相机如何通过BGAPISDK显示Bayer彩色格式的图像(C#)
  • Unity云渲染,加移动
  • ASP一个简单的网上教务系统模型的设计与实现
  • 黑马点评实战篇问题总结
  • C++ 并发编程
  • 5V的LDO电源的WCCA分析-可靠性分析计算过程
  • TensorFlow 深度学习第二版:6~10
  • C++标准库 -- 顺序容器 (Primer C++ 第五版 · 阅读笔记)
  • JavaEE初阶学习:文件操作
  • 【外设零基础通用教程】GPIO 下
  • 在window上安装python
  • [hive SQL] 预约业务线
  • LNMP架构和论坛搭建以及一键部署
  • RK3568平台开发系列讲解(设备驱动篇)V4L2程序实现流程
  • 人工智能中的顶级会议