Linux3:Linux下的基本工具使用(vim编辑器,gcc编译器,gdb调试
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
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软件进行查看
Linux3:Linux下的基本工具使用(vim编辑器,gcc编译器,gdb调试相关教程
hive的分桶表的基本使用
hive的分桶表的基本使用 参考 我是照着这个学习, 并且自己又总结了一下, 原作者: 添加链接描述 准备数据 准备 buckt_data.txt 在 /root/soft 目录下面 1,name12,name23,name34,name45,name56,name67,name78,name89,name9 开启分桶的配置 默认是不会帮你分桶的
Linux 使用 time sh 统计程序运行时间
Linux 使用 time sh 统计程序运行时间 用法: time sh xxx.sh 误区 实际情况是 user 时间比 real 时间还长,正常么? 不是一般情况下,real=user+sys? real5m2.635suser9m31.912ssys0m11.780s 也就是说,因为使用了多核cpu的并行处理能力。 如果单核cpu去做
如何在Linux上使用traceroute命令
如何在Linux上使用traceroute命令 Fatmawati Achmad Zaenuri/ShutterstockFatmawati Achmad Zaenuri / Shutterstock You can use the Linux traceroute command to spot the slow leg of a network packet’s journey and troubleshoot sluggish network conn
linux下字符驱动示例helloworld
linux下字符驱动示例helloworld hello.c /************************************************************************* File Name: hello.c Author: kayshi Mail: [emailprotected] Created Time: Thu 24 Sep 2020 11:25:50 AM CST ************************
Linux下清除磁盘分区及残留raid信息
Linux下清除磁盘分区及残留raid信息 Linux下清除磁盘分区及残留raid信息 适用场景: 1、 查看硬盘编号 2、 删除磁盘分区 3、 删除磁盘内残留raid信息 *本文适用于430-8i等只有低速格式化或没有格式化功能的HBA卡使用,若raid卡有格式化功能,建议使用raid卡
linux命令 awk_如何在Linux上使用awk命令
linux命令 awk_如何在Linux上使用awk命令 linux命令 awk Fatmawati Achmad Zaenuri/ShutterstockFatmawati Achmad Zaenuri / Shutterstock On Linux, awk is a command-line text manipulation dynamo, as well as a powerful scripting language. Here’s an
微信小程序电商首页开发基本思路
微信小程序电商首页开发基本思路 小程序电商UI源码参考(开发至购物车)链接: https://pan.baidu.com/s/1gBFNVJigtWLCpn6ZJxQZfQ 密码: tge8 编写页面路劲的时候,文件会自动生成 这里比较复杂的遍历是楼层的遍历 编写index.json { usingComponents: { Search
小白都会的linux下安装Redis
小白都会的linux下安装Redis 1、官网下载 本篇以Redis5.X版本为例,建议Redis5.X版本 Redis官网 如果非要尝鲜,当然6版本也行啊! 目前最新的6.X版本需要gcc版本5以上,需要先升级gcc ,这里是个坑。具体升级gcc如下 sudo yum install centos-release-sclsudo