Linux3:Linux下的基本工具使用(vim编辑器,gcc编译器,gdb调试工具,makefile编译)

Linux3:Linux下的基本工具使用(vim编辑器,gcc编译器,gdb调试工具,makefile编译)

1.vim编辑器的使用:

安装:

sudo apt-get install vim

如果遇到:
在这里插入图片描述
解决方法:

//强制解锁
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

之后,即可安装。

1.1vim 编辑器 :

vi/gedit:是系统自带的。
vi/vim 是 linux 下的通用文件编辑器,没有菜单,具有平台通用性,也可以在 windows 下面运行。
vim 具有
四种模式:命令模式 插入模式 底行模式 可视模式

命令模式:也称为普通模式,该模式下主要执行 vim 命令操作,可以移动光标进行浏览,整行删除,但无法编辑文字。刚打开 vim 时默认处于此模式,无论处于什么模式,按下 ESC 键进入此模式。

插入模式:正常的文本编写模式,在命令模式下按下命令快捷键可进入此模式。i,I,a,A,o,O。

底行模式:该模式下,光标位于屏幕底行,我们输入的内容都会出现在最低行。在命令模式下,按冒号(:)进入底行模式。

可视模式:对文本进行选择操作。在命令模式下按 v,可进入可视模式。

1.2vim 编辑器使用 :

用 vim 打开一个叫 file1.txt 的文件:
执行:vim file1.txt
打开并跳到某一行:
vim file1.txt +行号
常用操作(带:表示是底行模式的操作命令;不带:表示命令模式),区分大小写;
文件保存命令------带冒号说明是底行模式下的命令
:w 保存文件
:w file1 另存为 file1
:wq 保存退出 vim
:q 退出 vim(未保存提示不成功)
:q! 强制退出(不保存不提示)
:x 同:wq。
光标移动:
1.方向键操作,
2.命令模式下,h 表示向左移动光标,j 向下移动光标,k 向上移动光标,l 向右移动光标。
3.—vim 我们安装了插件之后也可以使用鼠标操作
进入插入模式命令
i 进入插入模式,在光标所在位置之前插入内容
I 进入插入模式,在光标所在行行首插入内容
o 在光标所在行下面新建一行,进入插入模式,
O 在光标所在行上面新建一行,进入插入模式,
a 进入插入模式,在光标所在位置之后开始插入内容
A 进入插入模式,在光标行行尾开始插入内容
复制粘贴命令:----命令模式下
nyy 表示复制光标所在行开始的 n 行内容,省略 n 表示复制光标所在行。
np 粘贴,n 表示粘贴的次数,可以省略,表示一次。
nP 粘贴到光标所在行上面。
y 复制选中的内容。
"y 复制选中内容,与 y 不同的是可以粘贴到另一个文件中。
"p 粘贴"y 复制到的内容。

文本选择----可视模式就是专门来选择文本的
进行插入模式----移动光标就可以来选择文本

文本删除命令------
1)d0 删至行首
2)d$ 或者 D 删至行尾
3)x 删除光标后的一个字符
4)X 删除光标前的一个字符
5)ndd 删除当前行及其后 n-1 行,省略 n 表示删除光标所在行。
6)最后一次删除掉的内容,执行 p 可粘贴内容
7)dw 删除至当前单词结尾

文本替换修改命令:
移动光标到要修改的字符处,按 r 再按要修改为的字符,即可进行
单个字符的替换

1.3vim 编辑器增强版配置
可以参考系统编程书 vim 配置,或者将文档资料里面的压缩包解压到当前用户的家目录。

1.4 图形化编辑器
Linux 下的图形化编辑工具 gedit、kedit。基本配置使用(修改字体大小、tab 跳格)
快捷键操作:ctrl +s 保存
Ctrl+q 退出

2.编译器的使用

2.1 程序编译流程
编译预处理 — 编译器 — 汇编器 ---- 链接 ---- 生成可执行程序

在这里插入图片描述

2.2gcc 编译器介绍

1、# gcc 源文件

生成可执行文件 a.out(如果没有指定生成文件名,默认 a.out)

2、指定生成文件名:

# gcc -o 源文件 生成文件名

注意顺序:
思考:如果-o 写到前面行不行????

# gcc -o 源文件 生成文件名 错误
# gcc -o 生成文件名 源文件 正确

总结: -o 选项后面必须跟所要生成的文件
3、gcc 展现程序编译过程
gcc -E 源.c -o 源.i
gcc -S 源.i -o 源.s
gcc -c 源.s -o 源.o
gcc 源.o -o 可执行程序

2.4 库文件
为了提高程序的编写效率以及模块化编程的思想,我们可以把相应的函数打包成库文件使用。Linux 下的库
文件分为静态库和动态库文件。
lib.a* 静态库 在编译的时候就链接进执行文件
lib.so* 动态库 在编译的时候只是调用,在执行生成文件的时候再链接库

2.5 静态库
fun.c main.c
gcc -c fun.c 将文件编译生成二进制文件
ar -rc libfun.a fun.o 将二进制文件打包生成静态库文件。
gcc main.c libfun.a -o main 利用库编译文件。
静态库把库文件和源文件打包生成一个可执行程序。这样导致可执行程序过大

2.6 动态库
动态库 — .so 文件
gcc -c fun.c 生成二进制文件
gcc -fpic -shared fun.o -o libfun.so
生成动态库文件。
gcc main.c libfun.so -o main
ldd main 发现找不到动态库文件。
cp libfun.so /lib

3.gdb 调试工具

3.1gdb 介绍
GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式
的,像 VC、BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC、BCB 的
图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。
一般来说,GDB 主要帮忙你完成下面四个方面的功能
1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、动态的改变你程序的执行环境

3.2gdb 使用

源程序:main.c


#include <stdio.h>
int main()
{
    
    
int i=1;
printf("I am main!!!1\n");
i=2;
printf("I am main!!!2\n");
i=4;
printf("I am main!!!3\n");
i=6;
printf("I am main!!!4\n");
return 0;
}
1、gcc main.c -g//编译 main.c 生成可以调试的可执行程序 a.out
2、gdb a.out
l //显示全部代码
b n//在第 n 行设置断点
r //运行
p i//打印变量 i 的值
c //运行到最后
q //退出

4.make 工程管理工具

4.1make 工具介绍
可以试想一下,有一个上百个文件的代码构成的项目,如果其中只有少数几个文件进行了修改,如果再从头
到尾将每一个文件都重新编译是个比较繁琐的过程。为此,引入了 Make 工程管理器的概念,工程管理器指管理
较多的文件,它是自动管理器能根据文件时间自动发现更新过的文件而减少编译的工作量,同时通过读入
Makefile 文件来执行大量的编译工作。

4.2 编译规则
目标:依赖
换行要视同 tab 键。
例如:

在这里插入图片描述

参考目录树
linux下常用工具
注:需要使用xmind软件进行查看

猜你喜欢

转载自blog.csdn.net/weixin_40734514/article/details/108802210