当前位置: 首页 > news >正文

Linux学习第二枪(yum,vim,g++/gcc,makefile的使用)

前言:在我的上一篇Linux博客我已经讲了基础指令和权限,现在我们来学习如何在Linux上运行和执行代码

目录

一,yum

二,vim

1)命令行模式

2)插入模式

3)底行模式

三,gcc/g++

四,makefile


一,yum

yum是Linux中的软件包管理器,软件包是有人一些人写好的代码和程序作出软件包放到服务器上,我们使用yum就能获取别人编译好的软件,相当于手机里面的应用商店,我们可以用这个去下载东西。

那我们怎么去去下载呢?

yum  install -y  lrzsz
##  install 代表安装   -y  代表自动安装   lrzsz是一个软件安装包

重要的软件包:lrzsz

这个软件包支持我们将Linux和window里面的文件进行互传,rz   支持我们通过拖拽的方式将window里面的文件传到Linux里面,sz   +文件  可以将Linux里面的文件传输到window里面

rz
#可以通过window图形化界面文件的方式传输,支持拖拽
sz  /home/test.c
#以为Linux一切皆文件,所以我们无法通过拖拽传输,必需加上路径

以后如果我们发现有无法发现此指令的错误提示,我们可以百度搜索出该指令的软件包,然后使用yum安装

二,vim

vim是Linux中打开文件的指令,在Linux中一切皆文件,我们无法不通过指令就直接进入文件的内部,而   vim  就是一个打开文件的指令

使用方法

vim  /root/test.c
#vim   文件路径

打开之后会是一个这样的样子,我们无法立马改动,只能查看,三大模式中的命令行模式

1)命令行模式

在这个模式下我们只能查看,但无法改动文件里面的内容,但这个模式是我们想要切换到其他模式的中介,也就是说,想要切换到其他模式我们首先要切换到这个模式

2)插入模式

插入模式顾名思义,就是能够进行编辑的模式,在这个模式下,有很多有用的快捷键助我们编辑

H:光标向左边移动一格

L:光标向右移动一格

J:光标向下移动一格

K:光标向上移动一格

之所以有上面几个快捷键是因为以前没有上下左右键,这个是当年老式键盘的上下左右

shift+G:直接到文本的末尾,想象一下如果文本有上万行,一行一行移动要多久,这个有多爽

数字+shift+G:移动到指定行

GG:回到文本的开头

shift+4:移动到当前行的末尾

shift+6:移动到当前行的首部

x:删除光标所在的字符

数字+x:删除光标后指定数目个字符

X:删除光标前的一个字符

数字+X:删除光标前的指定个字符

dd:删除当前行

数字+dd:删除光标后的指定行数

yw:复制光标所在位置的字符

数字+yw:复制光标后的指定数目字符

yy:复制当前行

数字+yy:复制光标及光标后的指定数目行

p:将复制的字符贴到光标所在位置

u:撤销上一步的操作

ctrl+r:恢复撤销的动作

3)底行模式

进入指令:shift+:

进入之后光标会移动到最下面那一行

这个时候我们就可以输入指令了

set  nu  :这个指令可以标注文件的行数

数字:直接移动到指定的行

?字符:即可查找指定的字符,但是是从当前行开始查找,如果有多个匹配目标,按n可查看下一个匹配目标

/  字符:也查找字符,但是是从文件第一行开始查找,如果有多个匹配目标,按n可查看下一个匹配目标

w:保存本次编辑

q:退出

补充:vim模式可以添加很多插件,向自动补充括号,高亮光标和所在行,这些插件大家可以百度搜索vim的配置,用起来很方便,助力敲代码!!!

wq!:强转保存退出,!代表强转,其他的指令也可使用

三,gcc/g++

gcc一般用于编译C代码

g++一般用于编译C++代码

使用方法

gcc -o test.o  test.c
#test.c是编译的目标文件,test.o是形成的可执行文件
./test.o
#这样就可以执行代码

接下来是一些你可能用到的操作

-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面

-S  编译到汇编语言不进行汇编和链接

-c  编译到目标代码 -

o 文件输出到 文件 -static 此选项对生成的文件采用静态链接

-g 生成调试信息。GNU 调试器可利用该信息。

-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.

-O0 -O1 -O2 -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高

-w  不生成任何警告信息。 -Wall 生成所有警告信息

四,makefile

首先你想象一个场景,你需要多次编译很多的源代码,如果你手动的一个个编译,我们会累成狗一样,因此Linux给我们提供了一种方法,将我们要做的操作放在里面,我们只要输出一个指令,系统就重复里面的操作,我们就可以节省很多时间,没错那就是makefile

如何用呢?

首先我们要创建一个名字叫makefile的文件,Linux对大小写不敏感,我们可以自便。然后我们使用vim打开makefile,我们现在开始讲

test.o:test.c
#目标文件:原文件2     gcc -o test.o test.c
#具体操作,目标文件可以用@代替,原文件可以用^代替3     .PHONY:clean
#被.PHONY修饰的称为伪目标,伪目标总是默认被执行4 clean:       
#使用make clean指令可以清理形成的文件和清理工作,因为生成的文件如果没有改变是无法再次形成的                                                                                                                                                 5     rm -rf test.o

在使用make的时候我们要注意,make编译一次之后如果文件内容没有发生改变是需要clean一次也就是删除掉形成的可执行文件才能继续make,因为系统无法同时存在两个一样的文件,这里就引出了一个问题,系统是怎么判断文件有没有发生改变的呢?这是因为文件有三个时间属性,modify,access,change。

modify:是最近文件内容修改的时间

change:代表最近文件属性修改的时间,一般来说文件内容改变,文件属性就会改变

access:代表文件最近访问的时间

每次改动文件都可能会改变文件的这些属性,make通过比较时间来确定文件是不是被改动了,当然如果只是访问了文件,make是不会重新编译文件的。

相关文章:

Linux学习第二枪(yum,vim,g++/gcc,makefile的使用)

前言:在我的上一篇Linux博客我已经讲了基础指令和权限,现在我们来学习如何在Linux上运行和执行代码 目录 一,yum 二,vim 1)命令行模式 2)插入模式 3)底行模式 三,gcc/g 四&a…...

自然语言处理(一):RNN

「循环神经网络」(Recurrent Neural Network,RNN)是一个非常经典的面向序列的模型,可以对自然语言句子或是其他时序信号进行建模。进一步讲,它只有一个物理RNN单元,但是这个RNN单元可以按照时间步骤进行展开…...

超全总结!大模型算法面试指南(含答案)

大家好,从 2019 年的谷歌 T5 到 OpenAI GPT 系列,参数量爆炸的大模型不断涌现。可以说,LLMs 的研究在学界和业界都得到了很大的推进,尤其去年 11 月底对话大模型 ChatGPT 的出现更是引起了社会各界的广泛关注。 近些年&#xff0…...

前端使用C-lodop 实现循环套打小案例

目录 前言引入js文件小案例 前言 lodop是一个很优秀打印插件,具体的大家可以官网了解,先在官网下载插件,安装在本地,并启动,点击官网下载 引入js文件 //本JS是加载Lodop插件或Web打印服务CLodop/Lodop7的综合示例&a…...

基于SpringBoot+Vue+mysql卓越导师双选系统设计与实现

博主介绍:✌Csdn特邀作者、博客专家、博客云专家、B站程序阿龙带小白做毕设系列,项目讲解、B站粉丝排行榜前列、专注于Java技术领域和毕业项目实战✌ 系统说明简介: 如今的信息时代,对信息的共享性,信息的流通性有着较…...

Windows 11系统cmd终端美化、Vscode终端美化

win11美化cmd终端和vscode的终端 1. 修改终端背景2. oh-my-posh2.1 安装oh-my-posh2.2 安装Clink2.3 Clink配置oh-my-posh2.4 下载和配置Nerd字体2.5 修改美化主题 3. vscode终端美化 电脑默认的终端没有语法高亮这些,运行命令和代码输出字体一样,有时会…...

[游戏中的图形学实时渲染技术] Part1 实时阴影技术

原理篇: 常见的渲染方程如下: 在不考虑自发光项与考虑阴影对于着色结果的影响之后可以将方程变化为如下形式: 如果射线在到达光源前击中了其他物体时,就认为这条来自光源的光线对着色点没有贡献。 利用上述渲染方程进行正确的着…...

NtripShare Mos地铁自动化监测终端盒子硬件设计

自动化监测产品到目前为止做了接近一年,在软件层面上,控制终端软件、平台软件、网平差算法都已解决,硬件盒子始终是心里过不去的坎,最终还是没有耐住性子自己做了一把。 选型如下: 1、主板:瑞芯微RK3568主板。 2、外…...

第 117 场 LeetCode 双周赛题解

A 给小朋友们分糖果 I 动态规划:设 p [ k ] [ i ] p[k][i] p[k][i] 为将 i i i 个糖果分给 k k k 个小朋友的方案数,先求 p [ 2 ] [ i ] p[2][i] p[2][i] ,再求 p [ 3 ] [ n ] p[3][n] p[3][n] class Solution { public:using ll long …...

OpenCV C++ 图像处理实战 ——《多二维码识别》

OpenCV C++ 图像处理实战 ——《多二维码识别》 一、结果演示二、zxing库配置2.1下载编译三、多二维码识别3.1 Method one3.1.1 源码3.2 Method two3.2.1 源码四、源码测试图像下载总结一、结果演示 </...

经典算法(查找与排序)

查找 顺序查找 顺序查找&#xff08;Linear Search&#xff09;是一种在有序数组中查找目标元素的基本算法。它的时间复杂度为 O(n)&#xff0c;适用于查找少量数据。顺序查找的基本思想是从数组的第一个元素开始&#xff0c;逐个与待查找的元素进行比较&#xff0c;直到找到…...

微软和Red Hat合体:帮助企业更方便部署容器

早在2015年&#xff0c;微软就已经和Red Hat达成合作共同为企业市场开发基于云端的解决方案。时隔两年双方在企业市场的多个方面开展更紧密的合作&#xff0c;今天两家公司再次宣布帮助企业更方便地部署容器。 双方所开展的合作包括在微软Azure上部署Red Hat OpenShift&#xf…...

ZYNQ_project:IP_ram_pll_test

例化MMCM ip核&#xff0c;产生100Mhz&#xff0c;100Mhz并相位偏移180&#xff0c;50Mhz&#xff0c;25Mhz的时钟信号。 例化单口ram&#xff0c;并编写读写控制器&#xff0c;实现32个数据的写入与读出。 模块框图&#xff1a; 代码&#xff1a; module ip_top(input …...

Leetcode刷题详解——优美的排列

1. 题目链接&#xff1a;526. 优美的排列 2. 题目描述&#xff1a; 假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组 perm&#xff08;下标从 1 开始&#xff09;&#xff0c;只要满足下述条件 之一 &#xff0c;该数组就是一个 优美的排列 &#xff1a; perm[i] 能够被…...

[PHP]Kodexplorer可道云 v4.47

KodExplorer可道云&#xff0c;原名芒果云&#xff0c;是基于Web技术的私有云和在线文件管理系统&#xff0c;由上海岱牧网络有限公司开发&#xff0c;发布于2012年6月。致力于为用户提供安全可控、可靠易用、高扩展性的私有云解决方案。 用户只需通过简单环境搭建&#xff0c;…...

C/C++数字判断 2021年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C数字判断 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C数字判断 2021年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 输入一个字符&#xff0c;如何输入的字符是数字&#x…...

云栖大会丨桑文锋:打造云原生数字化客户经营引擎

近日&#xff0c;2023 云栖大会在杭州举办。今年云栖大会回归了 2015 的主题&#xff1a;「计算&#xff0c;为了无法计算的价值」。神策数据创始人 & CEO 桑文锋受邀出席「生态产品与伙伴赋能」技术主题&#xff0c;并以「打造云原生数字化客户经营引擎」为主题进行演讲。…...

如何用java写一个网站:从零搭建个性化网站

随着互联网的迅猛发展&#xff0c;Java作为一种强大而灵活的编程语言&#xff0c;为构建各类网站提供了丰富的解决方案。本文将探讨如何使用Java编写一个个性化网站&#xff0c;并通过具体实例进行深入分析。 第一步&#xff1a;选择适当的技术栈 在着手构建网站之前&#xff0…...

Easyui DataGrid combobox联动下拉框内容

发票信息下拉框联动&#xff0c;更具不同的发票类型&#xff0c;显示不同的税率 专票 普票 下拉框选择事件 function onSelectType(rec){//选中值if (rec2){//普通发票对应税率pmsPlanList.pmsInvoiceTaxRatepmsPlanList.pmsInvoiceTaxRateT}else {//专用发票对应税率pmsPlan…...

力扣学习笔记——11. 盛最多水的容器

链接&#xff1a;https://leetcode.cn/problems/container-with-most-water/ 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...