西安网站设计公司,电脑网络,养生网站策划,专业seo关键词优化上篇文章#xff1a;Linux基础3-基础工具1(什么是工具#xff0c;yum#xff0c;vim基础)-CSDN博客 本章重点#xff1a; 1. vim详解 2. gcc详解 目录
一. vim详解
1.1 命令模式
1.2 插入模式
1.3 底行模式
二. gcc/g
2.1 程序的翻译过程#xff08;c/c代码执行过… 上篇文章Linux基础3-基础工具1(什么是工具yumvim基础)-CSDN博客 本章重点 1. vim详解 2. gcc详解 目录
一. vim详解
1.1 命令模式
1.2 插入模式
1.3 底行模式
二. gcc/g
2.1 程序的翻译过程c/c代码执行过程
2.2 gcc/g使用说明
2.3 动态链接与静态链接
2.4 查看Linux文件的链接方式和使用的标准库
2.5 gcc/g直接生成可执行文件
2.6 gcc使用静态链接
三. 下章重点
3.1 自动化构建工具make,makefile
3.2 Linux调试器gbd的使用 一. vim详解 我们知道vim常用的三种模式命令模式插入模式底行模式。这三种模式的转化图如下 1.1 命令模式
总结比较常用的vim命令
定位操作 shift 4$符号将光标定位到该行的末尾行右 shift 6^符号将光标定位到该行的行首行左 shift gG 将光标定位到底部底部 gg 将光标定位到顶部顶部 文件操作 复制文件所在行输入 yyn数字yy可以复制n行 粘贴文件所在行输入p输入p只粘贴一次输入np会粘贴n次 删除文件所在行输入ddn dd可以删除n行 剪切在一个光标所在处输入dd在林另一个光标所在处输入 p 撤销输入 u 取消撤销ctrl r 编辑操作
文件所在行替换大小写shirt ~
批量化替换shift r 进入替换模式即可
行内删除x向左删除X向右删除可以输入n删除n个并且支持使用p进行剪切
1.2 插入模式 命名模式输入 i 或o或 a 即可进入插入模式插入模式下直接输入即可插入文本
1.3 底行模式 命名模式下输入 shift : 即可进入底行模式。
w 写入 q 退出 wq 写入并退出 w强制写入 q强制退出
vs 文件名 可以分屏但无论分多少屏幕都只有一个光标
ctrl w w即可切换到其他屏幕。
! 加 shell 命名 即可在不退出文件的情况下执行linux命令
%s/printf/cout/g 即可将printf都替换成cout
二. gcc/g gcc/g是Linux中的编译器。用于编译c/c代码
2.1 程序的翻译过程c/c代码执行过程 1. 预编译去掉注释头文件展开宏替换条件编译 2. 编译检查语法将代码转换为汇编代码 3. 汇编将汇编代码转化为可重定向的二进制机器指令不可执行的二进制目标文件 4. 链接链接多个二进制目标文件形成可执行的目标文件 2.2 gcc/g使用说明
例如我们想编译运行下列代码文件名字为 test.c
#includestdio.hint main()
{printf(hello wolrd!\n);return 0;
}
1. 预编译
gcc -E test.c -o test.i -E #执行程序的预编译工作完成后停下来-o #指形成文件的临时文件名称 2. 编译
gcc -S test.i -o test.s-S #表示完成程序的编译阶段变成汇编代码之后停下来 3. 汇编
gcc -c test.s -o test.o#完成程序的汇编工作生成可重定向的不可执行二进制文件。停下来 4. 链接
gcc test.o -o test#链接的过程将库中的代码和我们自己写的代码链接起来形成可执行的二进制文件 5. 运行test
./test# ./ 可执行二进制文件 即可运行 2.3 动态链接与静态链接 链接的本质关联我们的代码和库代码 我们写代码只是写了代码的调用没有写对应的实现。只有当我们链接库代码之后标准库的实现代码才能和我们的代码关联 动态链接讲我们的程序和通过连接器和标准库关联需要使用标准库的时候去标准库中找 静态链接链接的时候不和标准库关联而是在我们程序内部将要用的方法给我们拷贝一份就完成了静态链接 动静态链接的优缺点
动态链接由于没有拷贝形成的可执行文件非常小节省资源占用内存磁盘小也方便别人下载。
静态链接不受库文件的升级或者删除但是形成的可执行文件非常大且如果有多个可执行文件会造成代码高度重复。
2.4 查看Linux文件的链接方式和使用的标准库 前置知识 1. Linux文件库的命名 动态库libxxxxx.so 静态库linxxxxx.a 2. file 文件 可以查看文件的链接方式 3. ldd 文件 可以查看文件使用的标准库 C语言 C 从图中也可得出gcc/g 默认使用的是动态链接
运行结果如下 2.5 gcc/g直接生成可执行文件
gcc test.c -o test
# gcc .c文件 -o 可执行目标文件
# 即可直接生成可执行文件
举例 2.6 gcc使用静态链接 1. 如果没有下载.c静态库需要先下载 2. 使用静态链接
gcc test.c -o test.s -static# gcc 代码文件.c -o 可执行目标文件 -static
# 目标文件可以使用.s进行标识
举例 可以看出静态链接的可执行文件非常大
test.s 比 test 大 100倍左右 静态链接无法ldd
使用file进行查看为静态链接 像shell python 这种脚本语言在linux中可以直接运行 甚至使用chmod可执行权限就能直接运行 三. 下章重点
3.1 自动化构建工具make,makefile
3.2 Linux调试器gbd的使用