文章目录
- Linux软件包管理器 —— yum
-
- 简介
- yum的使用
- Linux编辑器 —— vim
-
- Vim的三种常用模式
- Vim的基本操作
- Vim的正常模式命令集
- Vim的末行模式命令集
- Vim的配置
- Linux编译器 —— gcc/g++
- Linux调试器 —— gdb
- Linux项目管理器 —— make/Makefile
Linux软件包管理器 —— yum 简介 在Linux下安装软件, 一个通常的办法是运用yum指令,yum是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上。
yum的使用 如何显示可以安装的软件有哪些呢?
我们可以输入以下指令:
搜索结果为:
- yum list
文章图片
通过
yum list
展示的内容过多,我们可以使用管道指令和grep进行筛选,以gcc为例:
- yum list | grep gcc
文章图片
接来下我们如何安装某一款软件呢?以sl为例:
- sudo yum install sl
文章图片
输入
y
,进行安装即可最后我们如何想要卸载某一款软件?还是以sl为例:
- sudo yum remove sl
文章图片
Linux编辑器 —— vim Vim的三种常用模式 1. 正常/普通/命令模式(Normal mode)
2. 插入模式(Insert mode)
- 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段等
- 可按
i/a/o
进入插入模式,shift+;
进入末行模式
3. 末行模式(Last line mode)
- 只有在插入模式下,才可以进行编辑代码
- 按
Esc
可退回命令模式,不能直接到末行模式
Vim的基本操作 在命令行输入vim+文件名可以直接进入vim全屏幕编辑画面,当该目录下不存在此文件时,vim会自动创建文件。进入vim模式之后,是处于正常模式。正常模式可以与插入模式和末行模式相互切换,但插入模式和末行模式之间不能直接切换。
- 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作
- 按
Esc
可退回命令模式,不能直接到插入模式
Vim的正常模式命令集
- 移动光标
指令 | 功能 |
---|---|
h/j/k/l | 光标向左/下/上/右移动 |
gg | 移动到文章开始 |
shift+g | 移动到文章最后 |
#+shift+g | 光标移动到文章的第#行 |
shift+^ | 移动光标所在行的行首 |
shift+$ | 移动光标所在行的行尾 |
w | 光标跳到下个字的开头 |
e | 光标跳到下个字的字尾 |
b | 光标回到上个字的开头 |
#l | 光标移动到该行的第#个位置 |
- 删除文字
指令 | 功能 |
---|---|
dd | 删除当前光标所在行 |
#dd | 从光标所在行开始删除#行 |
x | 删除光标所在位置的一个字符 |
#x | 删除光标所在位置的#个字符 |
X(shift+x) | 删除光标所在位置前面的一个字符 |
#X | 删除光标所在位置前面的#个字符 |
- 复制粘贴
指令 | 功能 |
---|---|
yy | 复制当前行 |
#yy | 复制光标所在行往下数的#行 |
p | 将缓冲区的字符粘贴到光标所在位置 |
#p | 一次性粘贴#次p |
dd+p | 剪切 |
- 其他
指令 | 功能 |
---|---|
u | 撤销上一次操作 |
shift+~ | 快速大小写切换 |
r | 替换光标所在处的字符 |
R | 替换光标所到之处的字符,直到按下ESC键为止 |
shift+;
(:)
进入末行模式。指令 | 功能 |
---|---|
set nu | 在文件中的每一行前面列出行号 |
set nonu | 取消文件中的行号 |
vs 文件 | 多文件操作 |
ctrl+w+w | 文件之间的切换 |
w | 保存当前的文件 |
q | 退出当前文件 |
! | 强制执行某个指令 |
配置选项可以百度,这里举例
- 在用户目录下创建一个文件.vimrc
- 在文件中添加配置选项即可
Linux编译器 —— gcc/g++ vim编辑器编写代码后,c程序使用gcc编译器,c++程序使用g++编译器。
- 设置语法高亮:syntax on
- 显示行号:set nu
- 设置缩进的空格数:set shiftwidth = 4
使用方法:
默认生产的可执行文件为a.out,要想生成指定文件名可用-o+文件名。
- gcc xxx.c
在学习gcc编译器之前,先回顾一下c程序编译链接的过程:
- gcc xxx.c -o xxx
gcc编译.c文件时,可以通过不同选项实现查看各个过程的编译结果。
- 预处理(进行宏替换)
- 编译(生成汇编)
- 汇编(汇编转为机器码)
- 链接(生成可执行文件或库文件)
示例程序test.c如下:
1 #include .h>
2 #define NUM 10
3 int main()
4 {
5// hello world
6int a = NUM + 1;
7printf("NUM = %d\n", a);
8 }
- 预处理过程
vim test.i 查看内容发现预处理过程包括宏定义,文件包含,条件编译和去注释等。
- gcc -E test.c -o test.i
文章图片
- 编译过程
vim test.s 查看内容发现,在这个阶段首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,把代码翻译成汇编语言
- gcc -S test.i -o test.s
文章图片
- 汇编过程
vim test.o查看内容发现,程序已经从汇编指令转为机器码
- gcc -c test.s -o test.o
文章图片
- 链接过程
- gcc test.o -o test
文章图片
链接过程主要是将自己写的程序与函数或第三方库关联起来,生成可执行程序。
这里函数库分为静态库和动态库两种。
gcc 默认生成的可执行文件是动态链接的,可以通过
- 静态库是指编译链接的时候,将所有库文件的代码全部添加到可执行代码中,在运行时不需要库文件,但是静态库文件较大,其后缀为.a
- 动态库是在程序执行时由运行时链接文件加载库,节省系统的开销,动态库文件较小,其后缀为.so
file
命令查看验证。当然要想可执行文件是静态链接,可以通过-static
命令。文章图片
PS:有些服务器没有安装C语言的静态库,运行
gcc -static test.c -o test_static
会出现can not found -lc
的错误,这里只需要运行sudo yum install glibc-static
,安装静态库即可。gcc命令选项:
选项 | 功能 |
---|---|
-E | 只激活预处理,不生产文件 |
-S | 编译到汇编语言 |
-c | 编译到目标代码 |
-o | 生成指定文件 |
-g | 生成调试信息 |
-static | 采用静态链接库文件 |
在Linux下也有支持程序调试的调试器:gdb
用gdb调试的指令为:
此时文件必须带有调试信息,使用-g指令让可执行程序带有调试信息。
- gdb 文件
文章图片
使用ctrl+d或quit退出
常用的调试命令:
list/l —— 显示源代码Linux项目管理器 —— make/Makefile 实现一个项目通常会有很多文件,Linux通过Makefile来管理这些文件的运行先后等复杂操作。
r/run —— 运行程序
n/next —— 单条运行
s/step —— 进入函数调用
break/b 行号 —— 在某一行设置断点
info b —— 查看断点信息
delete breakpoints n —— 删除序号为n的断点
display 变量名 —— 跟踪查看变量的值
undisplay n —— 取消跟踪查看序号为n的变量
p 变量名 —— 打印变量值
finish —— 执行完当前函数
continue —— 执行到下一断点
until 行号 —— 执行到指定行
make是一个指令,Makefile是一个文件,两者搭配使用,实现项目自动化构建。
Makefile文件的书写格式为:
【Linux|给自己一首歌的时间学习来Linux基本开发工具】目标文件:依赖文件以mytest.c为例,若想把预处理、编译、汇编和链接过程的文件都生成,Makefile的书写为:
gcc [选项] 依赖文件 -o 目标文件
文章图片
make命令运行结果:
文章图片
要想删除make运行得到的可执行文件,则只需要在Makefile文件中加入:
文章图片
然后执行
make clean
即可。文章图片
***PS:***
.PHONY
是一个修饰符号,让其后面的命令总是可执行推荐阅读
- 运维|Anolis龙蜥升级kernel
- Linux|【关于VMware安装后没有虚拟网卡VMnet1和VMnet8】
- centos|centos 虚机扩容(linux)
- COMP-533模型驱动
- 进阶C语言|详解字符函数和字符串函数
- C语言基础|【C语言趣味游戏】猜数字
- c语言|C语言——指针初识(三)(指针和指针数组,一级指针,二级指针详解)
- 指针|C语言中的数组指针和指针数组的区别,代码+图例详解
- STM32f103学习笔记|Vscode下搭建STM32开发环境 -- Ubuntu 20.04