Linux的开发工具(二)

embedded/2024/11/26 23:08:08/

1.vim的基本操作

正常模式到插入模式

输入a

输入i

输入o

示例

输入iao下面的就会变成INSERT模式

插入模式到正常模式

按Esc键

正常模式到低行模式

shift+;

:w保存当前文件

:wq保存并退出

:q!强制退出

2.vim正常模式命令集

移动光标

用箭头的上下左右或者hjkl来控制,h左j下k上l右

按G:到最后一行

¥:移动到光标所在行的行尾

^:移动到所在行的首

gg:文本的开始

删除文字

x:没按一次删除光标所咋位置的一个字符

X:删除光标所在位置的前一个字符

dd:删除在行

复制

yy:复制光标所在行到缓冲区

#yy:如7yy表示拷贝光标所在行往下数7行文字

p:将缓冲区内的字符贴到所在位置

替换

r:替换光标所在处的字符

R:替换光标所到之处的字符,直到按Esc

撤销上一次操作

u:回到上一个操作

ctrl+r:撤销的恢复

跳到指定行

#G:10G就到第十行的首

3.简单vim的配置

配置文件的位置

在目录/etc/下面,有个vimrc的文件,是系统中公共的vim的配置文件,对所有用户都有效。

在每个普通用户的主目录下,都可以自己建立私有的配置文件,命名为“.vimrc ”,打开自己目录下的文件.vimrc通过 vim .vimrc

常用的配置选项

设置语法高亮:syntax on

显示行号:set nu

设置缩进的空格数为4:set shiftwidth=4

 4.编译器gcc/g++

2.1背景知识

1.预处理(进行宏替换/去注释/条件编译/头文件展开等)

2.编译(生成汇编)

3.汇编(生成机器可识别代码,二进制)

4.链接(生成可执行文件或库文件)

2.2预处理

gcc -E hello.c -o hello.i

选项 "-E",该选项作用是让gcc在预处理后停止编译过程

选项"-o"是指定文件,".i"文件为已经预处理的C原始程序

代码示例:

root@iZbp1be068ksa92vuf0kbdZ:~# touch c.c
root@iZbp1be068ksa92vuf0kbdZ:~# vim c.c
root@iZbp1be068ksa92vuf0kbdZ:~# gcc -E c.c -o hello.i
root@iZbp1be068ksa92vuf0kbdZ:~# vim hello.i

 

2.3编译

gcc -S hello.i -0 hello.s 

使用"-S"选项进行查看,该选项进行到编译就停止,生成汇编代码

代码示例:

root@iZbp1be068ksa92vuf0kbdZ:~# gcc -S hello.i -o hello.s
root@iZbp1be068ksa92vuf0kbdZ:~# vim hello.s

 

2.4汇编

汇编阶段是把编译阶段生成的“.s”文件转成目标文件

用“-c”选项可以看到汇编代码已经转换为“.o”的二进制代码

gcc -c hello.s -o hello.o

代码示例

root@iZbp1be068ksa92vuf0kbdZ:~# gcc -c hello.s -o hello.o
root@iZbp1be068ksa92vuf0kbdZ:~# vim hello.o

二进制: 

  1 ^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^A^@>^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@`^B^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@@^@^N^@^M^@ó^O^^úUH<89>?H<8d>^E^@^@^@^@H<89>??^@^@^@^@è^@^@^@^@?^@^@^@^@]?hello world^@^@GCC:     (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0^@^@^@^@^@^@^D^@^@^@^P^@^@^@^E^@^@^@GNU^@^B^@^@?^D^@^@^@^C^@^@^@^@^@^@^@^T^@^@^@^@^@^@^@^AzR^@^Ax^P^A^[^L^G^H<90>^A^@^@^\^@^@^@^\^@^@^@^@^@^@^@#^@^@^@^@E^N^P<86>^BC^    M^FZ^L^G^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^D^@??^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^C^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^C^@^E^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^    @^@^E^@^@^@^R^@^A^@^@^@^@^@^@^@^@^@#^@^@^@^@^@^@^@2 ^@^@^@^P^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@c.c^@main^@printf^@^@^@^@^@^@^@^@^K^@^@^@^@^@^@^@^B^@^@^@^C^@^@^@ü???????^X^@^@^@^@^@^@^@^D^@^@^@^E^@^@^@ü??????? ^@^@^@^@^@^@^@^B^@^@^@^B^@^@^@^@^@^@^@^@^    @^@^@^@.symtab^@.strtab^@.shstrtab^@.rela.text^@.data^@.bss^@.rodata^@.comment^@.note.GNU-stack^@.note.gnu.property^@.rela.eh_frame^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@    ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^A^@^@^@^F^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@#^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^[^@^@^@^D^@    ^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?^A^@^@^@^@^@^@0^@^@^@^@^@^@^@^K^@^@^@^A^@^@^@^H^@^@^@^@^@^@^@^X^@^@^@^@^@^@^@&^@^@^@^A^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@c^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@    ^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@,^@^@^@^H^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@c^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@1^@^@^@^A^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@    ^@^@^@c^@^@^@^@^@^@^@^L^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@9^@^@^@^A^@^@^@0^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@o^@^@^@^@^@^@^@,^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^A^@^@^@^@    ^@^@^@B^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<9b>^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@R^@^@^@^G^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?^@^@^@^@^@^@^@ ^@^@^    @^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@j^@^@^@^A^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?^@^@^@^@^@^@^@8^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@e^@^@^@^D^@^@^@@^@^@^    @^@^@^@^@^@^@^@^@^@^@^@^@?^A^@^@^@^@^@^@^X^@^@^@^@^@^@^@^K^@^@^@        ^@^@^@^H^@^@^@^@^@^@^@^X^@^@^@^@^@^@^@^A^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?^@^@^@^@^@^@^@<90>^@^@^@^@^@^@^@^L^@^@^@^D^@    ^@^@^H^@^@^@^@^@^@^@^X^@^@^@^@^@^@^@ ^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<88>^A^@^@^@^@^@^@^Q^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@    ^@^@^@^@^@è^A^@^@^@^@^@^@t^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

 


http://www.ppmy.cn/embedded/140750.html

相关文章

一区北方苍鹰算法优化+创新改进Transformer!NGO-Transformer-LSTM多变量回归预测

一区北方苍鹰算法优化创新改进Transformer&#xff01;NGO-Transformer-LSTM多变量回归预测 目录 一区北方苍鹰算法优化创新改进Transformer&#xff01;NGO-Transformer-LSTM多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab NGO-Transformer-LST…

【JavaEE初阶】多线程初阶下部

文章目录 前言一、volatile关键字volatile 能保证内存可见性 二、wait 和 notify2.1 wait()方法2.2 notify()方法2.3 notifyAll()方法2.4 wait 和 sleep 的对比&#xff08;面试题&#xff09; 三、多线程案例单例模式 四、总结-保证线程安全的思路五、对比线程和进程总结 前言…

基于YOLOv8深度学习的独居老人情感状态监护系统(PyQt5界面+数据集+训练代码)

本研究提出了一种创新的独居老人情感状态监护系统&#xff0c;基于YOLOV8深度学习模型&#xff0c;旨在通过对老年人面部表情的实时监测与分析&#xff0c;来精准识别其情感变化&#xff0c;从而提高独居老人的生活质量&#xff0c;确保其心理健康。本系统通过整合先进的YOLOV8…

Golang 反射

一、Go反射的应用场景 &#xff08;一&#xff09;对象序列化和反序列化 场景描述 在处理网络通信&#xff0c;数据存储等场景中&#xff0c;需要将对象转换为字节流&#xff08;序列化&#xff09;以便传输或存储&#xff0c;在接收端再将字节流转换回对象&#xff08;反序列…

Linux基础指令(汇总)

文章目录 1. ls指令2. pwd指令3. cd指令4. touch指令5. mkdir指令6. rmdir指令&&rm指令7. man指令8. cp指令8. mv指令9. cat指令10. more指令11. less指令12. head指令13. tail指令14. date指令15. cal指令16. find指令17. which指令18. whereis指令19. alias指令20. g…

【每天学点AI】实战图像增强技术在人工智能图像处理中的应用

图像增强&#xff08;Image Enhancement&#xff09;是人工智能和计算机视觉中一项重要的技术&#xff0c;也是人工智能数据集预处理的一个重要步骤。它旨在提高图像的质量&#xff0c;使其在视觉上更加清晰、细节更丰富。这项技术在自动驾驶、医疗诊断、安防监控等领域有着广泛…

Redis 过期策略和内存淘汰策略

一、过期策略 我们在set key的时候&#xff0c;可以给它设置一个过期时间&#xff0c;比如expire key 60。指定这key60s后过期&#xff0c;60s后&#xff0c;redis是如何处理的&#xff1f; 定时删除&#xff08;Active Expiration&#xff09; 原理&#xff1a;Redis会在后台…

信创改造 - TongRDS 替换 Redis

记得开放 6379 端口哦 1&#xff09;首先在服务器上安装好 TongRDS 2&#xff09;替换 redis 的 host&#xff0c;post&#xff0c;passwd 3&#xff09;TongRDS 兼容 jedis # 例如&#xff1a;更改原先 redis 中对应的 host&#xff0c;post&#xff0c;passwd 改成 TongRDS…