【Linux】环境基础开发工具使用

目录

Linux软件管理器 yum

1.什么是软件包

2.查看软件包

3安装与卸载

vim-Linux编辑器

1.vim基础概念

2.vim的基础操作

命令模式基本操作

底层模式基本操作

3、其它模式

Linux编译器 gcc/g++

1.如何进行编译

2.编译的四个过程

预处理(-E)

编译(-S)

汇编(-c)

链接

动态库与静态库

动态库和静态库的转变

Linux调试器 gdb

基本操作

Linux项目自动化构建工具 make/makefile

1.什么是make/makefile?

2.依赖关系与依赖方法


Linux软件管理器 yum

1.什么是软件包

在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装. 软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系. yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.

2.查看软件包

关于 rzsz, 这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.

安装完毕之后可以通过拖拽的方式将文件上传过去.

注意事项: 关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!! 可以通过 ping 指令验证

查看软件包: 通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令筛选出我们关注的包. 例如:

yum list | grep lrsz

结果如下:

lrzsz.x86_64 0.12.20-36.el7 @base

  • 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构。

  • "x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包. 选择包时要和系统匹配。

  • "el7" 表示操作系统发行版的版本. "el7" 表示的是 centos7/redhat7. "el6" 表示centos6/redhat6。

  • 最后一列, base 表示的是 "软件源" 的名称, 类似于 "小米应用商店", "华为应用商店" 这样的概念。

3安装与卸载

例如要安装tree

sudo yum install tree

安装gcc:

sudo yum install lrzsz

这时系统会向你再次确认是否安装,若不想进行此类再次确定可在末尾加上 -y

sudo yum install lrzsz -y

卸载软件:

sudo yum remove lrzsz

vim-Linux编辑器

安装vim:

sudo yum install vim

1.vim基础概念

vim的三种模式

我们重点讲解三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式 (command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

2.vim的基础操作

命令模式基本操作

  • 进入插入模式

按[i]进入插入模式[insert mode], 按“i” 进入插入模式后是从光标当前位置开始输入文件

按[a]进入插入模式,是从光标所在位置的下一个位置开始输入文字

按[o]进入插入模式,是插入新的一行,从行首开始输入文字

锚点,左右定位:

        [shift+4] : 定位到光标所在行的最结尾

        [ shift+6] :定位到光标所在行的最开始

上下定位

         [gg] :定位到最文件的最开始

         [shift+g] :光标定位到文件的结尾

        [n+shift+g] : 光标定位到文件的任意行

[yy] : 将当前光标所在的行,复制

[p] :粘贴

[nyy] : (n为具体数字) 从光标位置向下复制n行

[np] :向下粘贴n次

[u] :撤销

[ctrl+r] :取消刚才的撤销

[dd],[ndd]:删除光标所在行

[ndd+p],[dd+p]:剪切

[shirt+~] :将当前光标所在位置的字母大小写切换

[w],[b]:按照单词为单位进行光标跳转

[x],[nx] :删除光标所在字符和光标之后的字符

[X], [nX] :删除光标位置之前的字符,不包括光标当前位置

[r]对光标位置的字符进行替换

[shift+r(R)]:进入替换模式 k,j(jump),k(king),l:左,下,上,右

底层模式基本操作

  • set nu: 调出行号

  • set nonu:取消行号

  • w,q,!:保存,退出,强制

  • !+命令:不退出vim执行命令行命令

  • vs filename :分屏(依旧用wq!退出,光标在哪个退出哪个文件)

  • ctrl+ww:光标在多屏幕下进行切换

3、其它模式

列模式

ctrl+v进入列模式,进入列模式后可以通过命令模式的组合键移动光标来选择区域。按下大写的I可以在列模式中进入插入模式,对第一行进行操作即可,下面几行会复制第一行的操作。操作完之后按esc键退出,一般用来注释。

Linux编译器 gcc/g++

1.如何进行编译

在Linux下,我们通常用gcc和g++编译器进行编译,命令如下:

格式 gcc [选项] 要编译的文件 [选项] [目标文件]

在编译完成后生成a.out可执行文件,./a.out执行该文件。

2.编译的四个过程

预处理(-E)

功能:头文件展开,去注释,进行宏替换,条件编译。

gcc默认打印到屏幕上,如果要指定路径,后面加上-o选项,-o后面是路径。

-E :从现在开始进行程序的翻译,如果预处理完成,就停止

可以看出没有mytest.i文件比proc.c文件大很多,原因是在预处理阶段进行了头文件展开。

编译(-S)

功能:c代码编译成汇编

-S : 从现在开始进行程序翻译,如果编译完成,立即停止

汇编(-c)

功能:把汇编翻译成二进制语言

链接

功能:目标文件,只有函数的调用,没有函数的实现。链接的本质是将函数的调用和函数的实现结合起来。

运行:

动态库与静态库

安装静态库

sudo yum install -y glibc-static #C静态库

sudo yum install -y libstdc++-static #C++静态库

库的使用时需要链接(Link),而根据链接方式的不同,把库分为两种,动态库和静态库。

静态库(静态链接库):编译链接时,把库文件的代码全部加入到可执行文件中。

优点:可移植性强,不依赖第三方库,不会因为库的损坏导致程序无法运行。

缺点:浪费空间。

动态库(动态链接库):编译链接时,不会把库文件拷贝进来,只会存储库指向动态库的引用,等程序真正运行时,才会加载。

优点:省空间(磁盘的空间,内存的空间),体积小,速度快。

缺点:依赖动态库,可移植性较差,会因为库的损坏或者版本不合无法运行程序。

动态库和静态库的转变

gcc生成的可执行程序,默认是动态的。

gcc 带上 -staic就会变成静态。

Linux调试器 gdb

sudo yum install gdb #安装gdb

  • 程序的发布方式有两种,debug模式和release模式

  • Linux gcc/g++出来的二进制程序,默认是release模式

  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

  • 退出gdb,使用quit命令

基本操作

l(行号):显示代码

r:运行代码

b 行号:打断点

info b:查看断点

d 行号:删除断点

n:逐过程

s:逐语句

finish:直接运行完毕对应的函数

until:跳转至任意行(不建议使用)

continue:跳转到下一个断点处

p:查看变量内容活地址

display 变量:变量常显示

undisplay 行号:去掉常显示的变量

c : 运行至下一个断点处停下

Linux项目自动化构建工具 make/makefile

make 是命令 makefile是一个文件

1.什么是make/makefile?

会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。 make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。 make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

2.依赖关系与依赖方法

依赖关系主要表明需要依赖的对象,而依赖方法主要描述需要依赖的对象做什么。比如在上学期间,家里都会给我们打生活费。我们没钱了就会联系父母,因为我们和父母之间具有依赖关系。而联系父母是为了让他们给我们打生活费,打生活费这个具体行为这称为依赖方法。

我们要创建一个makefile文件,依赖关系和依赖方法都写在里面。

.PHONY表示伪目标,依赖方法总是被执行,可以重复执行。 make clean可以重复执行,而在文件不发生改变的情况下make只能执行一次。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码算法训练营day10 | 232.用栈实现队列、225. 用队列实现栈

day10: 232.用栈实现队列225. 用队列实现栈 232.用栈实现队列 题目链接 状态: 文档:programmercarl.com 思路: 用栈实现队列。要先明白两者的区别。 栈:单开门,先进后出,只有一端能进出。 队列:…

【论文笔记合集】LSTNet之循环跳跃连接

本文作者: slience_me LSTNet 循环跳跃连接 文章仅作为个人笔记 论文链接 文章原文 LSTNet [25] introduces convolutional neural networks (CNNs) with recurrent-skip connections to capture the short-term and long-term temporal patterns. LSTNet [25]引入…

1、鸿蒙学习-为应用/服务进行签名

针对应用/服务的签名,DevEco Studio为开发者提供了自动签名方案,帮助开发者高效进行调试。也可选择手动方式对应用/服务进行签名,如果使用了需要ACL的权限,需采用手动方式进行签名。 自动签名 说明 使用自动签名前,请…

简单!实用!易懂!:Java如何批量导出微信收藏夹链接-->转换成Markdown/txt

文章目录 前言参考方案方案1:Python方案2:Python 我的方案手动前置操作代码处理 前言 不知道是否有很多小伙伴跟我一样,有个问题非常愁,对于收藏党来说,收藏了学会了!然后导致微信收藏夹的东西越来越多了&…

2024年5家香港服务器推荐,性价比top5

​​香港服务器是中小企业建站、外贸建站、个人博客建站等领域非常受欢迎的服务器,2024年有哪些云厂商的香港服务器是比较有性价比的?这里根据小编在IT领域多年服务器使用经验,给大家罗列5家心目中最具性价比的香港服务器厂商。 这五家香港服…

Wireshark抓包工具的使用

提示:本文为学习记录,若有错误,请联系作者,谦虚受教 文章目录 前言一、下载二、首页三、使用1.读入数据2.分析数据3.筛选IP4.保存数据 四、过滤器表达式五、TCP总结 前言 低头做事,抬头看路。 一、下载 下载路径wire…

Java面试题总结200道(三)

51、什么是 Spring IOC 容器 Spring 框架的核心是 Spring 容器。容器创建对象,将它们装配在一起,配置它 们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的 组件。容器通过读取提供的配置元数据来接收对象进行实例化&#xff0…

【vue video.js】The element or ID supplied is not valid. (videojs) element Ui

问题:使用video.js做了一个弹窗显示视频,效果如下 但是发现弹窗再次打开,视频播放失败,报错The element or ID supplied is not valid 原因是videojs找不到需要初始化的视频id,在关闭弹窗的时候需要重置video.js&…

小迪安全42WEB攻防-通用漏洞文件包含LFIRFI伪协议

#知识点: 1、解释什么是文件包含 2、分类-本地LFI&远程RFI 3、利用-配合上传&日志&会话 4、利用-伪协议&编码&算法等 #核心知识: 1、本地包含LFI&远程包含RF1-区别 一个只能包含本地,一个可以远程加载 具体形成原因由代码和环境配置文件决定…

便利店小程序有哪些功能

​便利店小程序为附近的住户提供小程序在线购物的服务。用户只需要打开小程序,就可以购买需要的商品,可以选择自取或者配送。整个过程非常简单快速。下面具体介绍便利店小程序的功能。 1. **商品展示**:展示便利店的商品信息,包括…

芯片顶级盛会HotChip历年-未来芯片论坛及资料全集下载

提示:下载链接在文章最后。 Hotchips是全球芯片行业影响力最大的会议。 Hot Chips是一个技术会议,聚焦于半导体和微处理器的设计与创新。以下是一些关于Hot Chips的信息和相关链接: Hot Chips会议官方网站:https://www.hotchips…

Prometheus 基于 Consul 实现服务自动发现注册

文章目录 一、概述二、docker-compose 部署 Prometheus1)部署 docker2)部署 docker-compose3)配置 prometheus.yml4)配置 rules.yml5)配置 alertmanager.yml6)编排 docker-compose yaml 文件7)开…

【Windows Defender 排除指定 文件夹、文件夹以提升性能】

使用webStorm时候提醒排出程序和目录提升性能, 于是我就把我的代码目录和常用程序全部排出, 不过不知道能不能提升多少性能, 先加上再说 一.使用UI配置排出项 隐私与安全性安全中心 病毒与威胁防护 添加或删除排出项 配置 二.使用命令配置 使用 PowerShell开启自动排除列表…

Redis数据结构对象之字符串对象

字符串对象 字符串对象的编码可以是int、raw或者embstr 如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么字符串对象会将整数值保存在字符串对象结构的ptr属性里面(将void *转换成long),并且将字符串对象的编码设…

面试算法-39-删除链表的倒数第 N 个结点

题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 解 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {L…

在idea中配置tomcat服务器,然后部署一个项日

1.下载tomcat Tomcat下载 点击右边的tomcat8 找到zip点击下载 下载完,解压到你想放置的路径下 2.配置环境变量 打开设置找到高级系统设置点击环境变量 点击新建,变量名输入:CATALINA_HOME,变量值就是Tomcat的安装路径&#x…

空间计算综合指南

空间计算(spatial computing)是指使人类能够在三维空间中与计算机交互的一组技术。 该保护伞下的技术包括增强现实(AR)和虚拟现实(VR)。 这本综合指南将介绍有关空间计算所需了解的一切。 你将了解 AR、VR…

Python 查找并高亮PDF中的指定文本

在处理大量PDF文档时,有时我们需要快速找到特定的文本信息。本文将提供以下三个Python示例来帮助你在PDF文件中快速查找并高亮指定的文本。 查找并高亮PDF中所有的指定文本查找并高亮PDF某个区域内的指定文本使用正则表达式搜索指定文本并高亮 本文将用到国产第三方…

【代码】提取图像轮廓坐标并保存为YOLOv8所需的txt格式

该段代码的应用场景为对图像标注过后,想要对图像进行裁切,但是标签不能裁切,所以将原图像按照标签进行二值化后,将二值化后的图像进行裁切,然后使用opencv对裁切后的图像进行处理,识别出白色区域轮廓&#…

1987-2022年各省专利申请授权数据(8个指标))

1987-2022年各省专利申请授权数据(8个指标)) 1、时间:1987-2023年 2、指标:国内专利申请受理量(项)、国内发明专利申请受理量(项)、国内实用新型专利申请受理量(项)、国内外观设计专利申请受理量(项)、国内专利申请授…