IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 三、Linux工具(vim、gcc/g++ 、gdb、Makefile) -> 正文阅读

[系统运维]三、Linux工具(vim、gcc/g++ 、gdb、Makefile)

1 工具介绍

本段介绍的是Linux环境下的工具的一些使用。

1.1 小玩意

在centos下,我们使用yum来管理软件包,yum(Yellow dog Updater,Modified)是Linux下非常常用的一款包管理器。

  • 软件安装
    一般安装软件需要root权限,可以在root用户下安装或者使用sudo yum install *** ,这里***指的是需要安装的软件包。

2 Vim介绍

首先介绍一下Vi与Vim ,简单点,vim是vi的升级版。下面主要说一下Vim的几种常见模式。其中先介绍最常用的三种模式:命令模式,插入模式,底行模式。

  • 命令模式(正常模式,普通模式):
    完成复制,粘贴,光标移动,删除等操作。
  • 插入模式:
    完成代码等内容的输入;
  • 底行模式:
    完成文件保存或退出,也可以进行替换,找字符串,列出行号。

以上三种模式的切换方式:

按 i/a/o
shift +:
ESC
删除命令/回车
ESC
命令模式
插入模式
底行模式

提出问题:Vim有多少种模式?
解答: 在底行模式下输入:help vim-modes“”
我的是环境 阿里云centos7.6 其中有:
Basic modes: 7种
Additional modes:6种

2.1 vim基本操作

插入模式几种区别:

  • 按「i」切换进入插入模式,按“i”进入插入模式后是从光标当前位置开始输入文件;
  • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字

2.1.1 命令模式操作

高效操作之光标操作:(在命令模式运行)

  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
  • 按[gg]:进入到文本开始
  • 按「G」即 shift + g:移动到文章的最后
  • 按「 $ 」即 shift + 4:移动到光标所在行的“行尾”
  • 按「^」即shift + 6:移动到光标所在行的“行首”
  • 按「w」:光标跳到下个字的开头
  • 按「e」:光标跳到下个字的字尾
  • 按「b」:光标回到上个字的开头
  • 按「#l」(注意数字+小写的L):光标移到该行的第#个位置
  • 按「ctrl」+「b」:屏幕往“后”移动一页
  • 按「ctrl」+「f」:屏幕往“前”移动一页
  • 按「ctrl」+「u」:屏幕往“后”移动半页
  • 按「ctrl」+「d」:屏幕往“前”移动半页

高效操作之删除:(在命令模式运行)
“x” : 删除光标所在位置的一个字符
“#x” : 删除光标所在位置向后的#个字符
“X”:删除光标所在位置之前的一个字符
“#X”:删除光标所在位置之前的#个字符
“dd”:删除光标所在行,其实是剪切操作
“#dd”:删除光标所在行向下数#行,其实是剪切操作

高效操作之复制
“yy” :复制光标所在行到缓冲区
“#yy”:复制光标所在行向下数#行到缓冲区
“p”:将缓冲区内的字符粘贴到光标所在位置
“#p”:粘贴n次

高效后悔药之“撤销”:
“u” : 撤销,回到上次操作,多次按“u”,多次恢复
“ctrl + r” : 反撤销,撤销的恢复

2.1.2 底行模式操作

底行模式打开

  • “#” :输入任意一个数字 + 回车键 跳转到想要的行
  • “set nu” : 显示行号
  • “set nonu” : 取消显示行号

查找字符:

  • “/搜索词”:搜索关键字,按n依次向下寻找
  • “?搜索词”: 搜索关键字,按n依次向上寻找
    保存文件:
    “w”:保存文件
    “wq”:保存并退出
    “q”:退出
    “w/q+!”:!感叹号 强制操作

3 gcc工具

gcc的几个步骤:

  • 预处理:头文件展开,去掉注释,宏替换,条件编译
  • 编译:将C语言的代码翻译成汇编代码
  • 汇编:将汇编代码生成目标二进制文件
  • 链接:将目标文件和系统库进行链接,形成可执行程序

3.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 # 链接,生成可执行文件

3.2 gcc 选项含义

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

4 gdb-Linux调试器

在VS编程时我们会看到,一个程序发布有Debug和Release两种模式。其中在Linux中使用gcc/g++来直接生成的是Release版本。如需要调制需要生成调试版本。命令如下

gcc test.c -o test -g 

如何进入GDB呢?命令

gdb test # 上面生成的test可执行文件

4.1 调试命令

  • list 查看代码
  • list 1 查看从第一行起始 可以 简写成 l 1 (小L)
  • quit 退出
  • 打断点: break 10 10行打断点 简写为 b 10
  • 查看断点 info b
  • 运行 : run 或 r
  • 进入函数(逐语句执行): s 或者 step
  • 逐过程执行: n 或者 next
  • gdb 能记住最近一次命令 只需要按回车即可
  • 查看变量内容: p
  • 跟踪变量,每次停下来都显示变量值: display+变量名 或者 display + &rt
  • 取消长时间显示 undisplay + 编号
  • 直接进入 until + 行号 直接跳转至某行 ,(默认跳过没用的花括号,不用执行的语句)
  • 删除断点 : d + 断点编号
  • 禁用断点 : disable breakpoint + 断点编号
  • 启用断点 : enable + 断点编号
  • 从一个断点到另一个断点(跳转到指定断点) : continue c ,(代码块划分,确定错误范围)
  • 跑完当前函数 运行完当前函数 finish (逐个检测每个函数是否正常)
  • 设置变量的值: set var i = 10

5 Make工具

make是一个命令,用来执行makefile文件里面的命令;
makefile是一个文件,其写有项目的依赖结构;

5.1 单文件入门

假设已经有了test.c文件,Makefile应该这样写(#号是注释,供理解,写时候删除):

test:test.c #依赖关系
    gcc test.c -o test # 依赖方法

其实makefile还可以添加如下模块:

test:test.c
    gcc test.c -o test 
.PHONY:clean #伪目标
clean:
    rm -f  test

注释:
.PHONY的作用

  1. 说明其后接着是伪目标
  2. 保证总是被执行,每次make clean都会执行clean下的代码;

原理性操作(供理解):
仿照编译的过程来寻找依赖项逐步生成可执行文件。

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

.PHONY:clean
clean:
	rm -f test.o test.s test.i test

5.2 多文件

文件结构:
文件
下面上makefile文件:

main:main.o test.o
	gcc main.o test.o -o main

main.o:main.c
	gcc -c main.c

test.o:test.c
	gcc -c test.c

.PHONY:clean
clean:
	rm -r *.o main

5.3 小技巧

将上述多文件编写的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

.PHONY:clean
clean:
	@rm -f test.o test.s test.i test

5.4 Makefile还可以这样写

可以将上述多文件的makefile写成如下形式,这里使用了通配符等;其实关于升级写法还有好多,比如定义变量等。

main:main.o cal.o
	gcc -o $@ $^
%.o:%.c
	gcc -c $<
.PHONY:clean
clean:
	rm -f *.o main
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 23:19:00  更:2021-07-14 23:19:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 0:25:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码