Linux工具

一、yum

yum可以看作一个客户端(应用商店)、应用程序,它如何知道去哪里下载软件?

yum也是一个指令/程序,可以找到它的安装路径。

在list中可以看到yum能安装的所有软件,通过管道找到想要的,yum install直接安装。

yum remove 删除

Base中内置了下载链接,镜像网站。

官方yum源只能下载被审核过的,也可以使用epel.repo扩展源。

更新yum源就是替换其中的源文件,更新链接。

二、vim的使用

1、操作

三种模式间切换

光标定位  复制yy  粘贴p 剪切dd 撤销u  反撤销Ctrl+r

~切换大小写(一行小写变大写) r替换某几个   R替换模式   x删除一个字符

vs打开多个窗口     ctrl+ww切换

强制保存退出  wq!

2、配置

先创建一个隐藏文件.vimrc

在该文件中添加指令,如set  nu添加行号,行距、提示、高亮等。

一个用户对应一个配置文件,不会相互影响。

三、sudo提权指令

sudo提权之前,该用户必须添加到信任名单(白名单) sudoers file 的配置文件中        

对于user和group都是只读权限,即普通用户不能更改,只能由root指定添加。

四、Linux编译器gcc/g++

1、预处理(4个)

gcc -E xxx.c   -o xxx.i

gcc编译的源文件必须以.c结尾 (因为其对应寻找的库是C语言的)

g++则必须以.cpp结尾,否则不能编译

但编译链接后的可程序程序如a.out,只要有可执行权限x即可运行。

C/C++开发前,系统中必须要有相应的头文件、库文件。下载安装VS2022时就会一起下载好。

Linux中,存储在user/include文件下。

可以在使用gcc时添加宏进行条件编译。(源文件中#ifdef DEBUG #else ...  #endif)提前写好

在编译时可以加选项,gcc test.c -o test.exe -DEBUG.

注:预处理之后的.i文件仍为C语言

2、编译

形成汇编

gcc -S  xxx.i  -o  xxx.s

全变为汇编指令 call  movl等

3、汇编

形成机器可识别的二进制文件

目标文件(可重定向目标二进制文件)

gcc  -c  xxx.i  -o  xxx.o  vim是文本编辑器,无法识别二进制

4、链接

生成可执行文件

5、动静态库

C语言的标准库在Linux下可以认为是一个文件,也有自己的路径

lib代表库,c为库名称,后面为类型。(默认只有动态库,没有安装静态库)

(1)库是什么,有什么用?

各种方法的实现都在库中,库是把几个源文件.c经过一定翻译、打包成一个文件。

只需提供个对方一个文件即可,也达到了隐藏源文件的目的(使用库可以省略大量重复工作--造轮子) 

头文件提供方法的声明,库文件提供方法的实现,加上自己写的-->一个自己开发的软件。

(2)动静态链接原理

ldd指令可以查看可执行程序使用的动态库

在Linux中,链接 形成可执行程序时默认使用动态库

动态链接依赖动态库,去找动态库。

静态库链接直接拷贝到目标程序,之后的执行不依赖静态库。

加上-static选项变为静态链接,由于拷贝,生成的.exe也会变大

ldd查看静态链接的程序,显示不是动态可执行。

C和C++的静态库如图

file指令查看是动态还是静态链接

(3)动静态链接的优缺点

(4)debug/release

用readelf指令获取debug信息    (ELF二进制格式构成)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时序预测 | MATLAB实现Attention-GRU时间序列预测(注意力机制融合门控循环单元,TPA-GRU)

时序预测 | MATLAB实现Attention-GRU时间序列预测----注意力机制融合门控循环单元,即TPA-GRU,时间注意力机制结合门控循环单元 目录 时序预测 | MATLAB实现Attention-GRU时间序列预测----注意力机制融合门控循环单元,即TPA-GRU,时…

nvm安装后,安装并切换版本,node报错

1、下载 下载地址 https://github.com/coreybutler/nvm-windows/releases 这个版本是 v1.1.11,不喜欢的话,自己选版本 下载setup.exe,安装 2、安装 安装时候 安装路径可以自选,但是涉及到指向的路径,最好让它自己选&…

深入探索C语言自定义类型:打造你的编程世界

一、什么是自定义类型 C语言提供了丰富的内置类型,常见的有int, char, float, double, 以及各种指针。 除此之外,我们还能自己创建一些类型,这些类型称为自定义类型,如数组,结构体,枚举类型和联合体类型。 …

【TCP】四次挥手(最强详解!!通俗易懂!!)

目录 想要了解三次握手的话可以参考我的另外一篇博客 首先来了解一下FIN和ACK FIN ACK 接着我们再来具体的了解TCP四次挥手过程 转换为最最通俗理解方法: 想要了解三次握手的话可以参考我的另外一篇博客 【TCP】三次握手(最强详解!!通俗…

C++之std::distance应用实例(一百八十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

MySQL 8 数据清洗总结

MySQL 8 数据清洗三要素: 库表拷贝和数据备份数据清洗SQL数据清洗必杀技-存储过程 前提:数据库关联库表初始化和基础数据初始化: -- usc.t_project definitionCREATE TABLE t_project (id varchar(64) NOT NULL COMMENT 主键,tid varchar(…

以物联网为核心的智慧工地云平台:聚集智能技术,实现建筑工地智慧管理

智慧工地云平台源码,智慧工地项目监管平台源码,智慧工地可视化数据大屏源码 智慧工地云平台是将云计算、大数据、物联网、移动技术和智能设备等信息化技术手段,聚集在建筑工地施工管理现场,围绕人员、机械、物料、环境等关键要素&…

Docker Compose 安装使用 教程

Docker Compose 1.1 简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的 快速编排 。从功能上看,跟 OpenStack 中的 Heat 十分类似。 其代码目前在 https://github.com/docker/compose 上开源。 Compose 定位是 「定义和运行多个…

Revit SDK:AutoJoin 自动合并体量

前言 Revit 有一套完整的几何造型能力,每一个体量都是一个GenericForm,这些体量可以通过拉伸、扫掠等创建。这个例子介绍如何将他们合并成一个体量。 内容 合并体量的关键接口: // Autodesk.Revit.DB.Document public GeomCombination Com…

Java String类(1)

String类的重要性 我们之前在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据的方法分离开的方式不符合面向对象的思想&…

任务执行和调度----Spring线程池/Quartz

定时任务 在服务器中可能会有定时任务,但是不知道分布式系统下次会访问哪一个服务器,所以服务器中的任务就是相同的,这样会导致浪费。使用Quartz可以解决这个问题。 JDK线程池 RunWith(SpringRunner.class) SpringBootTest ContextConfi…

vue3项目导入异常Error: @vitejs/PLUGIN-vue requires vue (>=3.2.13)

vue3项目导入异常 1、异常提示如下: failed TO LOAD config FROM D:\ws-projects\vite.co nfig.js error WHEN STARTING dev SERVER: Error: vitejs/PLUGIN-vue requires vue (>3.2.13) OR vue/compiler-sfc TO be pre sent IN the dependency tree.2、解决办法…

excel怎么设置任意选一个单元格纵横竖横都有颜色

有时excel表格内容过多的时候,我们通过excel设置任意选一个单元格纵横,竖横背景颜色,这样会更加具有辨识度。设置方式截图如下 设置成功后,预览的效果图

Remmina在ubuntu22.04中无法连接Windows

Remmina在ubuntu22.04中无法连接Windows 问题 提示为&#xff1a; 无法通过TLS到RDP服务器… 分析 原因是Remmina需要使用openssl通过RDP加密与Windows计算机连接&#xff0c;而ubuntu22.04系统中OpenSSL版本为3.0&#xff0c;Openssl3 将 tls<1.2 和 sha1 的默认安全级别…

如何使用Unity制作一个国际象棋

LinnoChess1.0 该项目旨在做一些Unity小游戏项目开发来练练手 如果有更新建议请私信RWLinno 项目地址&#xff1a;https://github.com/RWLinno/LinnoChess 目前效果 能够正常下棋&#xff1b;能够编辑棋盘&#xff1b;能够SL棋局&#xff1b;能够记录棋谱&#xff1b;能够显…

Unity MonoBehaviour事件函数的生命周期

Unity运行时候的默认的几个函数的执行顺序&#xff1a; 首先是Awake&#xff0c;OnEnable&#xff0c;Start等&#xff0c;后面是FixUpdate Update 最后是OnDisable、OnDestroy

LNMT架构

所谓的LNMT架构 指的就是Linux操作系统上部署Nginx web服务器、MySQL数据库服务器、Tomcat中间件服务器 L linux N nginx M mysql T tomcat 单机部署 1&#xff0c;安装 apache-tomcat 2&#xff0c;移动目录 3&#xff0c;复制第二个tomcat 4&#xff0c;…

2、结构型设计模式

结构型设计模式 目录 结构型设计模式1. 代理模式1.1 概述1.2 结构1.3 静态代理1&#xff09;抽象主题类 SellTickets2&#xff09;真实主题类 TrainStation3&#xff09;代理类 ProxyPoint4&#xff09;客户端类 1.4 JDK 动态代理1&#xff09;代理工厂类&#xff1a;ProxyFact…

【Terraform学习】Terraform模块基础操作(Terraform模块)

本站以分享各种运维经验和运维所需要的技能为主 《python》&#xff1a;python零基础入门学习 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…

Elasticsearch 7.6 - API高阶操作篇

ES 7.6 - API高阶操作篇 分片和副本索引别名添加别名查询所有别名删除别名使用别名代替索引操作代替插入代替查询 场景实操 滚动索引索引模板创建索引模板查看模板删除模板 场景实操一把索引的生命周期数据迁移APIGEO(地理)API索引准备矩形查询圆形查询多边形查询 自定义分词器…