Linux的开发工具与使用

Linux 下的开发工具

文章目录

      • Linux 下的开发工具
      • 其他语言相关的编辑器
        • Linux下的开发工具
          • 包管理器 : yum(命令行版的应用商店)
          • yum 的基本用法
          • su 能够切到管理员用户
        • vim编辑器(神之编辑器)
          • Vim的强大之处
          • Vim 的竞争对手
          • Vim 基于模式的方式完成编辑
            • 1.vim[文件]
        • 能够与Vim并肩的编辑器
          • Sublimme Text(史上最性感的编辑器)
          • Atom(Github官方编辑器 )
          • neovim
          • VScode(MS) ----》依赖图形界面
          • 打开的Vim的同时系统会产生一个 . swap文件
          • gcc进行预处理
          • gcc 下的选项
          • gcc的优化级别
          • gbd : Linux下的命令行调试工具
          • gdb的使用场景
          • cgdb:更方便一点(出现调试的箭头)
          • 调试一个问题的步骤和思路
        • 吐核文件的查看
        • 工程管理工具(c++,java中存在)
          • makefile说明
          • makefile文件的格式
          • make 命令的执行过程
      • vim 的配置
          • 其他的vim配置
          • vimtutor下几种模式间的相互转换

vs是一个IDE(集成开发环境)

集成环境所需要具备的条件

  • 1.代码编辑器
  • 2.编译器
  • 3.调试器
  • 4.工程管理工具
  • 5其他 …

其他语言相关的编辑器

Java

  • Eclipse ===>也可以开发C++
  • IDEA ====>也可开发c++

JetBrains(全家桶)

JetBrains(全家桶) 依赖的语言
CLion C++
PHP PHPStorm
PyCharm Python
JavaScript WebStorm
Go GoLand

Linux下的开发工具

功能 开发工具
代码编辑 vim
编译 gcc
调试 gdb / cgdb
工程管理 makefile
包管理器 : yum(命令行版的应用商店)

软件源:应用商城对应的服务器

yum的所有操作都要在网络畅通的情况下使用

yum的局限性: 只能安装一些比较知名的软件(也可以直接以源代码的方式进行安装)

yum list | grep tree   
  • " | " 左边的输出内容做为右边的输入
  • " |" 叫做管道,能够链接两条指令
  • 通过 “|” 将左边的指令执行结果进行过滤
yum 的基本用法
  • 1.yum list
  • 查找需要的软件(一般不按回车,因为服务器上的软件过多会导致电脑卡死)
  • 2.yum install 安装(必须有管理员权限)
  • 3.yum remove (卸载软件)

除了yum安装之外,还可以使用源代码直接编译的方式安装(极其复杂,非专业人士不要尝试)

su 能够切到管理员用户

退出管理员:exit 或者 Ctrl + d

sudo 不切换用户,但是可以使用管理员权限运行程序

vim编辑器(神之编辑器)

史上最牛逼的文本编辑器之一

并肩的存在:Emacs(编辑器之神)---->依赖的编程语言Lisp(与c语言齐名)

Vim的强大之处
  • 1.支持非常丰富的快捷键(操作效率非常高,学习成本比较高)演化成了一种思想。
  • 2.支持非常强大的扩展能力(插件机制)。背后依赖着一个编程语言(VimL)
Vim 的竞争对手
Vim 的竞争对手
notepad++
notepadplus
utrla edit
source insight
Vim 基于模式的方式完成编辑
1.vim[文件]
  • 打开并进行编辑文件,若该文件不存在的系统会自动创建该文件

  • vim是一个多模式的文本编辑器(例如:普通模式,低行模式,插入模式等)

Vim刚刚启动的时候是普通模式(vimtutor),普通模式下不能直接输入内容。此时敲下的按键多半是带有特殊功能的快捷键,需要进入插入模式才能进行编辑

    1. "w " 保存
    1. " q" 退出
  • 3.普通模式下按 “:” 进入底行模式(只有在低行模式下才能进行vim的退出与保存)

能够与Vim并肩的编辑器

Sublimme Text(史上最性感的编辑器)
  • 1.界面好看

  • 2.支持vim风格的快捷键

Atom(Github官方编辑器 )
  • 1.界面好看

  • 2.支持Vim风格的快捷键

  • 3.支持非常强大的扩展(安装插件非常方便)

  • 4.致命缺陷:启动非常慢

neovim
  • 真正有望取代Vim的软件
VScode(MS) ----》依赖图形界面
  • 1.界面好看

  • 2.支持Vim 的扩展功能(安装插件极其方便)

  • 3.启动速度很快

打开的Vim的同时系统会产生一个 . swap文件
gcc进行预处理
过程 作用
1.预处理 头文件替换,宏展开,去掉注释,条件编译,其他预处理指令
2.编译 源代码文件转换成汇编代码
3.汇编 汇编代码转换成二进制文件
4.链接 把所有的二进制文件和依赖的库合到一块,得到可执行程序

相关指令

gcc test.c -o test

  • 生成一个叫 test 的可执行文件 ,默认生成的是 a.out

gcc -E

  • 只进行预处理,不生成文件,你需要把他重定向到一个输出文件里面

gcc -E test.c -o test.i

  • 对test.c进行预处理

vim test.i

  • 查看预处理后的结果

gcc -S test.i - 0 test.s

  • 进行编译得到汇编代码

gcc test.c -g -o test

-g 选项 编译的时候保留调试信息

gcc 下的选项
选项 功能
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和链接
-c 编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息。
-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-w 不生成任何警告信息
-Wall 生成所有警告信息
gcc的优化级别
选项 优化作用
-O0 -O0表示没有优化 (大写O)
-O1 -O1为缺省值
-O2 业界公认的优化级别,(优先选择)
-O3 编译器的优化选项的4个级别中-O3优化级别最高

优化级别越高程序的实际执行顺序就和原来的执行顺序差别越大必须 要关闭优化才能进行调试

一般调试的时候用 -O0

gbd : Linux下的命令行调试工具

安装:yum install gdb

Linux下调试的背景

  • 程序的发布方式有两种,debug模式和release模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

使用场景

list/l

  • 进入gdb模式查看程序代码(代码量小的程序)
  • 效果如下图
    Linux的开发工具与使用_第1张图片

run/r

  • 开始执行程序

break/b n

  • 在第n 行打断点,参数可以是一个行号,也可以是函数名。

打断点的文件编译时必须要用 gcc 的 -g 选项生成调试信息查看信息用print 来查看断点之前的变量的值

print/p

  • 查看变量内容

info b

  • 查看断点信息

continue/c

  • 一个断点处调试结束后继续执行断点以后的代码

next/n

  • 单步执行(逐过程) 会跳过函数

stp/s

  • 单步执行(逐语句) ,会进入函数

bt

  • 调用函数栈帧(十分重要)

frame/f

  • 切换到某个指定栈帧,只是执行了切换指令,代码并未继续执行

breakstrace

  • 打印掉用栈

q

  • 退出gdb

Ctrl + r :快速搜索

gdb的使用场景
  • 1.使用gdb调试coredump(核心转储文件)文件 (coredump是程序的临终遗言,最后的运行状况)
  • 程序奔溃:可以利用空指针的方式 (int *p=NULL; *p=10;)
  • 事后调试: 程序奔溃会将按照奔溃日志(吐核文件)来进行调试
  • 2.使用gdb attach(附加) 上一个程序。
  • TODO(进程相关的内容)
cgdb:更方便一点(出现调试的箭头)

安装命令: yum install cgdb

调试一个问题的步骤和思路
  • 1.确认是不是bug:唯一依据就是产品需求
  • 2.确认有bug后,开始定位bug :找到是那行代码引起的bug
  • 3.分析问题的原因(幸福感).
  • 4.提出方案并修改问题
  • 5.测试(回归测试,防止代码的修改引入新的问题).由于回归测试 ,成本比较高往往以自动化测试为主。

吐核文件的查看

  • ulimit -a :查看

  • ulimit -c(允许吐核文件生成) unlimited(不限制文件大小)

  • 执行以上命令后运行可执行文件会生成一个吐核文件(二进制文件),

  • 生成形式为 core.之前进程的pid(core.8215)

gdb <可执行文件名> : 查看吐核文件

工程管理工具(c++,java中存在)

解决大型项目中的模块之间的依赖问题

工具名称:makefile(40年前的技术)

当前的现代c/c++工程管理工具本质都是通过自动化的方式生成makefile

  • 1.先在当前目录中查找Makefile/Makefile 文件
  • 2.找到要生成的目标(决定是否要真的生成)
  • 3.检查以来的文件是否存在
  • 4.执行生成动作的命令
makefile说明
  • 一个Makefile中可以存在多个目标,有的目标并不是为了生成个东西而仅仅是为了执行一些特定的动作

  • 最典型的就是clean方式(清空之前生成的目标

  • make 指令后带上参数(要去生成的目标): make clean

  • 如果makefile中包含了多个目标,直接敲make默认生成第一个目标

  • clean 这样的目标,只是为了执行一个动作,而不是为了生成一个文件。如果此时目录中碰巧存在一个叫clean的文件,就会影响到动作的执行,就可以使用 **.PHONY ** 把clean 声明成"伪目标"

makefile文件的格式

【目标】:【依赖目标】

【命令】

  • 例如:test:test.c

gcc -g test.c -o test

make 命令的执行过程
  • 1.先在当前目录中查找m/Makefile文件

  • 2.找到要生成的目标(决定是否真的生成),若依赖目标不存在则无法生成需要生成的目标文件

  • 3.检查依赖的文件是否都存在

  • 4.执行生成动作的命令

CMake:开源世界中广泛使用的构建工具

Blaze(火焰刀):比较重量级的构建工具

增量编译:程序那些部分进行了修改就会编译那些部分

**全量编译:不管程序是否进行了修改都会重新编译一边 **

vim 的配置

码云 Vimforcpp

按下Esc进入普通模式,按空格进人编辑器功能 选择模式

退出选择模式的方法 按下空格键然后按下 f 和a

其他的vim配置

spacevim 一套比较知名的配置(对于新手特别不友好)
vimplus 稍微旧一点的,有些功能不是很科学

vimtutor下几种模式间的相互转换

Linux的开发工具与使用_第2张图片

你可能感兴趣的:(初学者,Linux)