linux编程必备(yum vim gcc g++ gdb makefile)

文章目录

  • yum
    • 下载安装
    • 删除软件
  • vim
    • 命令模式
    • 底行模式
    • 插入模式
    • vim的配置
  • gcc和g++
    • gcc
      • 背景知识
      • gcc简单演示
      • gcc选项
        • 预处理
        • 编译
        • 汇编
        • 链接
          • 函数库
    • g++
  • gdb
    • 选项
      • run
      • list/l
      • b(breakpoint)(打断点)
      • s
      • n
      • display
        • p
        • undisplay
      • finish(结束当前函数)
      • c(continue)
      • until
      • d
      • disable
  • make/makefile

yum

(等同于手机上的应用市场)
Linux中安装软件并不简单
方法
1.源码安装,编译一个源码进行安装
2.rpm安装,安装包
3.Linux可能存在大量软件之间的依赖关系,就需要安装许多第三方库,安装非常麻烦,因此可以使用
yum,自己会考虑依赖关系,而不许要我们去处理
查找软件
在这里插入图片描述
可以搭配grep进行搜索过滤
linux编程必备(yum vim gcc g++ gdb makefile)_第1张图片

下载安装

yum install (软件名)
linux编程必备(yum vim gcc g++ gdb makefile)_第2张图片

删除软件

yum remove (软件名)
linux编程必备(yum vim gcc g++ gdb makefile)_第3张图片

vim

  • IDE集成开发环境,干什么都可以,而linux里面可以安装这样的集成开发环境,但是我们一般不会这么做
  • 编写代码 —》vim(vi的升级版).vi 文本编辑器,从定位上和记事本没有任何差别,都是用来写代码的(只能写代码)
  • 编译代码
  • 调试代码
  • 发布代码,运行
    代码关系的维护(.h文件谁包含谁)
    这些写代码都要包含

vim是多模式的编辑器
(默认是命令模式)
进入后按i可以插入文字

还有底行模式
linux编程必备(yum vim gcc g++ gdb makefile)_第4张图片

命令模式

光标我们不用键盘中的上下左右
而用hjkl

h 在这4个字母的最左边所以是光标向移动
l在最右边所以是向移动
j(jump)向下跳,所以是向下移动
k(king)国王高高在上,所以向上移动

光标位置锚点,快速定位到行首 shift+^
行尾 shift+$
gg光标直接定位到第一行
shift+g直接定位到行尾
n+shift +g 快速定位到指定行
w可以按照单词为单位,一个单词一个单词向后进行查找
b向前移动

复制粘贴
yy复制当前行
p就粘贴
n+p就是一次重复粘贴n行
2yy就从当前行往下两行复制(多行复制)
u就可以撤销之前的操作
dd:删除当前光标所在行
dd+p就是剪切
n+dd就是
shift+~大小写切换
(小写)x就会把当前所在光标的1个字符给删掉
n+x就会把光标之后的n个字符给删掉
(大写)X就会从光标处往前删除字符
n+X就会从光标处往前删除n个字符
r可以替换光标处的字符
shift r(替换模式),可以实现多个内容的替换
ctrl r撤销刚才的撤销

在插入模式也可以这样弄,但是特别慢

底行模式

shift :

set nu可以把行号调出来
set nonu就取消行号
vs .c可以实现不同文件的分屏显示
ctrl ww就可以在不同屏中光标切换
wq就是退出光标所在的屏幕
w是保存
q是退出
!强制

插入模式

进入插入模式有
a光标往后移动一位进入插入模式
o就是光标往下一行进入插入模式

插入模式不能进入底行模式

vim的配置

vim配置在自己的配置文件中,只会影响自己的操作,不会影响别的用户
root有自己的配置文件,只影响自己,
(只会影响自己,不会影响别人)

gcc和g++

gcc

背景知识

  • 预处理(进行宏替换,去注释,头文件展开,条件编译)
  • 编译(生成汇编)
  • 汇编(生成机器可识别代码)
  • 连接(生成可执行文件或库文件)

1.为什么c程序的翻译是这个过程

  • 一开始都是二进制编程(打孔编程),只有高级科研人才才可以写
  • 出现了汇编语言 助记符,利用编译器变成二进制代码
  • 出现了c语言,先变成汇编语言,更加简单,开发效率更加高
    C语言中有很多需要被提前处理的,比如注释等

2.链接如何理解

自己写的c程序和语言上或者第三方库

gcc简单演示

在vim上编写mycode.c文件
linux编程必备(yum vim gcc g++ gdb makefile)_第5张图片linux编程必备(yum vim gcc g++ gdb makefile)_第6张图片gcc是编译c语言程序

  • gcc [目标文件]
  • ./a.out

linux编程必备(yum vim gcc g++ gdb makefile)_第7张图片

gcc选项

预处理

gcc -E mycode.c :开始进行翻译,完成预处理之后,就停下来不做下面的事情
在这里插入图片描述将预处理生成的写入一个临时文件 mycode.i(已经经过了预处理阶段)

linux编程必备(yum vim gcc g++ gdb makefile)_第8张图片linux编程必备(yum vim gcc g++ gdb makefile)_第9张图片

编译

gcc -S mycode.c(-S,开始进行程序的翻译,完成编译之后就停下来就不要往后走了)
在这里插入图片描述因为已经经过了预处理所以可以直接使用mycode.i,跳过预处理阶段,并将生成的临时文件放入mycode.s里面
linux编程必备(yum vim gcc g++ gdb makefile)_第10张图片生成了汇编语言

汇编

计算机不可以直接执行汇编语言
汇编语言需要编译器
gcc -c mycode.c(从源文件开始)
也可以gcc -c mycode.s
在这里插入图片描述

linux编程必备(yum vim gcc g++ gdb makefile)_第11张图片汇编形成的二进制文件并不可以直接执行,叫做可重定向目标文件

链接

语言也是有库的!调用了第三方的语言库(一套头文件+一套库文件(libc.a,libc.so))
需要链接将我们自己的代码中的函数调用,外部数据,和库关系起来

  • gcc mycode.o
    gcc mycode.o -o mycode
    自定义生成可执行程序的名字
    ./mycode
    linux编程必备(yum vim gcc g++ gdb makefile)_第12张图片方便的时候也可以
    gcc mycode.c -o mycode(生成可执行程序)推荐
    ./mycode
    在这里插入图片描述
函数库

linux分为:

  • 静态库: .a,指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了,其后缀名一般为“.a”,静态链接

  • 动态库: .so 在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行链接文件加载库,这样可以节省系统的开销,一般后缀名为“.so”,动态链接
    (都和程序成功运行有关)

在这里插入图片描述gcc默认采用动态链接方式,形成可执行程序
在这里插入图片描述
如果想要采用静态链接 -static

g++

编译c++程序,g++也可以编译c语言
g++和gcc的选项和过程都是一样的
linux编程必备(yum vim gcc g++ gdb makefile)_第13张图片在这里插入图片描述
Linux可以直接跑很多语言如python,shell

linux编程必备(yum vim gcc g++ gdb makefile)_第14张图片

gdb

调试代码
gdb带上可执行程序的名字
在这里插入图片描述
如果一个程序可以被调试的,该程序的二进制文件一定加入了一些debug信息
release去掉了debug信息
linux中默认的可执行程序是release
但是我们如果想要调试的话,要g++ mycode.cpp -o mycode -g
加入-g选项就可以了

linux编程必备(yum vim gcc g++ gdb makefile)_第15张图片
linux编程必备(yum vim gcc g++ gdb makefile)_第16张图片在这里插入图片描述

选项

run

相当于f5
linux编程必备(yum vim gcc g++ gdb makefile)_第17张图片

list/l

会显示代码,一次显示10行,再l会接上之前代码后面显示

l 1会从第一行开始显示
linux编程必备(yum vim gcc g++ gdb makefile)_第18张图片

b(breakpoint)(打断点)

b (行)
linux编程必备(yum vim gcc g++ gdb makefile)_第19张图片info b(显示断点)

在这里插入图片描述

linux编程必备(yum vim gcc g++ gdb makefile)_第20张图片再r一下,就在断点处停了下来

s

相当于f11
linux编程必备(yum vim gcc g++ gdb makefile)_第21张图片

n

相当于f10

display

(常显示,每次调试都会显示一次)
相当于监视窗口查看一个变量的值
linux编程必备(yum vim gcc g++ gdb makefile)_第22张图片linux编程必备(yum vim gcc g++ gdb makefile)_第23张图片

p

只显示一次
linux编程必备(yum vim gcc g++ gdb makefile)_第24张图片

undisplay

不想再常显示之前设的变量
在这里插入图片描述

finish(结束当前函数)

可以自行的把一个函数给跑完
linux编程必备(yum vim gcc g++ gdb makefile)_第25张图片

c(continue)

直接跳到下一个断电
linux编程必备(yum vim gcc g++ gdb makefile)_第26张图片

until

直接跳到某一行
until 12

d

删除断电
d (几号断电)

linux编程必备(yum vim gcc g++ gdb makefile)_第27张图片

disable

禁用断电
disable (第几个断点)
linux编程必备(yum vim gcc g++ gdb makefile)_第28张图片
enable就开启断点
linux编程必备(yum vim gcc g++ gdb makefile)_第29张图片

make/makefile

1.make是一条命令 ,makefile是一个文件
2.文件和文件之间的互相依赖关系

make和makefile可以达到我们形成可执行程序的目的

makefile

1.依赖关系
2.依赖方法

linux编程必备(yum vim gcc g++ gdb makefile)_第30张图片在这里插入图片描述清理功能(删除可执行文件)
linux编程必备(yum vim gcc g++ gdb makefile)_第31张图片
linux编程必备(yum vim gcc g++ gdb makefile)_第32张图片.PHONY 修饰对于的符号,伪目标(总是可执行的)的概念

linux编程必备(yum vim gcc g++ gdb makefile)_第33张图片make一次只会执行一个依赖关系,

你可能感兴趣的:(Linux,linux,vim,编辑器)