Linux编辑器

devtools/2025/3/19 6:02:51/

Linux编辑器

yum

yum是包管理器,类似于Linux的应用商店,安装和卸载工具需要使用yum,Linux系统中是预装了yum的

rzsz工具: Linux和window的文件互传工具 yum install lrzsz

查看所有的软件列表: yum list
在这里插入图片描述

el代表centos,@base代表软件的提供方是base

卸载软件 yum remove lrzsz

拓展yum源: yum install epel-release

好玩(无用)的指令

yum install sl

yum源在哪里查看? ls /etc/yum.repos.d/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何更新yum源?

先备份 sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

阿里云源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清华大学源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo

网易源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

清理缓存 sudo yum clean allsudo yum makecache

验证新源是否可用 sudo yum repolist

更新yum源的本质就是: 用新的保存有各种文件替换现有的CentOS-Base.repo文件

vim

vim是一个文本编辑器

vim的模式:一开始进入vim之后是命令模式,输入i进入插入模式,输入shift+分号进入底行模式

在命令模式下,所有的输入都被当做命令来看待

命令模式->插入模式 输入iao即可

插入模式->命令模式 输入esc即可
在这里插入图片描述

若在使用vim编辑文件时,出现了异常,导致后面打开文件的时候会出现异常.是因为vim默认会帮我们保存这个文件的备份.
在这里插入图片描述

此时输入d即可删除掉这个临时文件

vim命令行模式下的常用命令

shift+4进入当前行的最后一列

shift+6进入当前行的第一列

shift+g将光标定位到文本的最结尾

gg将光标定位到文本的最开始

number shift+g将光标定位到文本的第number行

h 光标左移

l 光标右移

j 光标下移(jump)

k 光标上移(king)

number yy 复制当前行开始的number行

number p将剪切板的内容粘贴number次

u撤销

crtl+r对撤销进行撤销

dd 剪切当前行能和p组合使用

number dd 剪切number行

摁住shift,按~进行大小写转换

number r 替换当前光标所所在字符,替换为下一次输入

shift + r进入替换模式

number x 删除光标所在字符,默认向后删

number shift + x 删除光标所在字符,向前删

w 按照单词在行内向右移动

b 按照单词在行内向左移动

shift + 3 查询当前页面中当前光标所在的单词,按n进行跳转

底行模式:

  1. 在这里插入图片描述

  2. 可以在底行中先输入!,再进行编译运行当前的软件

  3. 可以在底行中直接对比两个文件
    在这里插入图片描述

    如何进行光标移动? ctrl + ww w按两次

  4. 在底行模式中输入 set nu可以显示行号,输入 set nonu可以取消行号

vim使用技巧案例

vim test.cpp +11让光标直接定位在11行
在这里插入图片描述

保存并退出vim的另一种方式: shift + zz也就是输入两次Z

vim中批量化加注释的方式

  1. crtl + v
  2. hjkl区域选择
  3. 输入 shift + i
  4. 输入 //
  5. 输入 esc

vim中批量化去注释的方式

  1. ctrl + v
  2. hjkl区域选择
  3. 输入 d

vim的配置

  • 需要到家目录创建 .vimrc的文件

系统中也有一个vimrc文件 通过 ls /etc/vimrc查看

要配置vim,直接编辑对应用户的家目录下的.vimrc文件即可

vim的一键配置,直接在gitee上搜索VimForCpp
在这里插入图片描述

直接执行这个指令即可

gcc/g++编译器

C语言代码编译制定文件名 gcc -o a test.c -std=c99
在这里插入图片描述

C代码也可以使用g++进行编译 g++ -o a test.c
在这里插入图片描述

gcc只能编译C代码,g++可以编译C代码和C++代码

程序翻译的过程

  1. 预处理
  2. 编译
  3. 汇编
  4. 链接

预处理(处理之后还是C语言代码)

  1. 头文件展开
  2. 去注释
  3. 宏替换
  4. 条件编译

编译(编译之后就成了汇编语言)

汇编(将汇编->二进制,也就是可重定位目标二进制文件,但是这个二进制文件是不能执行的)

链接()

预处理实例 gcc -E test.c -o test.i
在这里插入图片描述

注意右边的test.i文件中没有了头文件,因为进行了头文件展开

条件编译时: 可以在编译时添加宏 gcc -o mybin test.c -D V2=1
在这里插入图片描述

可以通过给编译器传递不同的宏的值来进行对代码的动态裁剪


编译实例 gcc -S test.i -o test.s

在这里插入图片描述
在这里插入图片描述

-S选项的功能是?从现在开始进行程序的翻译,编译工作做完就停下来


汇编实例 gcc -c test.s -o test.o

在这里插入图片描述

此时的test.o文件已经是二进制了

-c的功能? 从现在开始进行程序的翻译,如果汇编工作做完就停下来,最终生成的是不可执行的目标二进制文件


链接实例 gcc -o test test.o
在这里插入图片描述

如何查看一个文件所依赖的库呢? 使用 ldd filename
在这里插入图片描述

Linuxwindow
动态库.so.dll
静态库.a.lib

动态库的特点:一旦缺失,所有依赖这个库的程序都无法执行

动态库

  • 优点:比较节省资源,不会出现太多的重复代码,可以节约很多内存,网络等资源
  • 缺点:对库的依赖性较强,一旦库丢失,所有使用这个库的程序都无法运行

静态库

  • 优点:不依赖库,可以在同类型平台进行跨平台使用
  • 缺点:生成的可执行程序的体积比较大,比较浪费资源.内存,网络等资源

默认的编译指令 gcc -o test test.c是动态链接的
在这里插入图片描述

静态链接案例

如何主动进行静态链接? gcc -o mybin2 test.c -static

注意:在第一次执行这个指令的时候,会出错,是因为系统默认没有安装静态库,需要通过 sudo yum install glibc-static指令进行安装
在这里插入图片描述

所以gcc的默认链接就是动态链接,要主动静态链接需要输入 -static 选项

案例:静态链接和动态链接生成的可执行文件的文件大小区别很大
在这里插入图片描述

使用g++进行静态链接 g++ -o file file.cpp ,前置安装: sudo yum install libstdc++-static

自动化构建工具Make/Makefile

make是一个命令 makefile是一个配置文件

mybin:test.cgcc -o $@ @^

在这里插入图片描述

清理项目

mybin:test.cgcc -o $@ @^
clean:rm - r mybin

清理的话直接运行 make clean即可

默认的make只会执行从上到下的第一个目标文件,并且默认只生成一个

使用make的实例
在这里插入图片描述

发现有了mybin文件之后,再次进行make之后,make帮我们检测了此时的mybin文件是否是最新的,只要mybin这个目标文件的最近修改时间比所有的源文件时间的最近修改时间新,就说明这个mybin文件是最新的.

如何查看一个文件的三个时间? stat filename
在这里插入图片描述

这三个时间从上到下分别是 Access Time, Modify Time,Change Time

当对文件的内容做修改时,修改的是Modify Time

如果是对文件的属性做更改那么就是改变文件的Change Time

Access TIme是访问文件的最新的时间,但是并不是每次查看文件都会修改文件的Access Time会浪费系统的资源

如果每次修改文件的话,Modify TimeChange Time都会同时改变,因为修改了文件之后,文件的大小也会变化.文件的属性也就变化了.

使用touch命令可以修改文件的Modify Time. 例如 touch filename

makefile文件的更多的语法:

伪目标 使用 .PHONY进行修饰
在这里插入图片描述

不过一般建议将clean设置为伪目标 因为清理工作总是要执行的
在这里插入图片描述

不建议将源文件设置为伪目标,如果每一次make的时候,每个目标文件都要重新编译的话,会降低编译效率

在makefile文件中还可以进行替换操作,如图
在这里插入图片描述

makfile文件中的递归式写法

mybin:test.ogcc -o mybin test.o
test.o:test.sgcc -c test.s -o test.o
test.s:test.igcc -S test.i -o test.s
test.i:test.cgcc -E test.c -o test.i
.PHONY:clean
clean:rm -f test.i test.s test.o mybin

在这里插入图片描述


http://www.ppmy.cn/devtools/168257.html

相关文章

微软OneNote无法同步解决方案

目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑,最方便且免费的多设备笔记同步方案就是微软自家的OneNote,使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote,经常会出现无法同步、同步失败&#xff1…

基于SpringBoot+Vue的电商应用系统的设计与实现(代码+数据库+LW)

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本电商应用系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

Java面试黄金宝典1

1. 8 种基本数据类型 整数类型 byte: 它是最小的整数类型,占用 1 个字节(8 位)。在一些对内存使用要求极高的场景,比如嵌入式系统开发、数据传输时对数据量有严格限制的情况,会使用 byte 类型。例如&#x…

工作记录 2017-02-04

工作记录 2017-02-04 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、DataExport的设置中去掉了ListPayors,见DataExport\bin\dataexport.xml 2、“IPA/Group Name” 改为 “Insurance Name”。 3、修改了Payment Posted的E…

工作记录 2017-02-06

工作记录 2017-02-06 序号 工作 相关人员 1 修改Payment Detail的处理。 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、View EOB Files的 “prior / next” 改为了 “PREV / NEXT” 2、Summary “Billed Date” 改为了 “Billing Date” 3、修改了Payment De…

《我的Python觉醒之路》之转型Python(十五)——控制流

[今天是2025年3月17日,继续复习第一章节、第二章节的内容 ] 《我的Python觉醒之路》之转型Python(十四)——控制流

基于云漂移优化(Cloud Drift Optimization,CDO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码

一、云漂移优化算法 云漂移优化(Cloud Drift Optimization,CDO)算法是2025年提出的一种受自然现象启发的元启发式算法,它模拟云在大气中漂移的动态行为来解决复杂的优化问题。云在大气中受到各种大气力的影响,其粒子的…

Vue:Vue2和Vue3创建项目的几种常用方式以及区别

前言 Vue.js 和 Element UI 都是用 JavaScript 编写的。 1、Vue.js 是一个渐进式 JavaScript 框架。2、Element UI 是基于 Vue.js 的组件库。3、JavaScript 是这两个项目的主要编程语言。 而Element Plus是基于TypeScript开发的。 一、Vue2 1、基于vuecli工具创建 vue2 …