当前位置:   article > 正文

【Linux】开发工具入门指南,轻松掌握你的开发利器

【Linux】开发工具入门指南,轻松掌握你的开发利器

1. 软件包管理器yum

1.1 软件包安装方式

  1. 源代码安装:用户手动下载程序的源代码,并进行编译,得到一个可执行程序。
  2. rpm包安装:预编译好的二进制包。
    有些人提前把常用的软件编译好,做成软件包,相当于Windows上的安装程序,将它放在一个服务器上,通过包管理器就可以直接获取到这个编译好的软件包,直接进行安装。
  3. yum安装:yum是软件包管理器,是Linux预装的一个指令,用于搜索、下载、安装对应的软件,相当于是Linux的"应用商店"。它提供了丰富的工具、指令、程序,用于软件的安装、检查、卸载等操作。yum的所有操作必须保证主机(虚拟机)入网。

1.2 yum的"三板斧"

yum list | grep 命令

  • 功能:查找和了解当前系统中有哪些软件包可以用。list列出当前所有的软件包、grep用来筛选出我们所需要得到软件包。

image.png

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

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

  • e17表示操作系统商业发行版,表示Centos7/redhat7。

  • base表示软件源,类似于手机中的应用商店。

yum install -y 命令

  • 功能:安装指定的软件包。它会自动找到都有哪些软件包需要下载,敲"y"确认安装,出现"complete"表示安装成功。

  • 只有root、进行sudo的普通用户才能使用,因为安装软件需要向系统目录中写入东西。yum安装软件时只能一个安装完了才能安装另一个。

yum remove 命令

  • 功能:卸载指定的软件包。

1.3 yum的周边

一、yum如何知道目标服务器的地址和下载连接的?

  1. 答:主要依赖于yum源(软件仓库)中的配置文件和存储库设置。/etc/yum.repos.d是yum源(软件仓库)。

  2. yum的配置信息存储在/etc/yum.repos.d目录下,在这个目录下,有多个以.repo为后缀的文件,这些文件都是yum源的配置文件。每个.repo文件定义了一个或者多个软件仓库的细节内容,包括从哪里下载需要安装或升级的软件包。

  3. /etc/yum.repos.d/CentOS-Base.repo是一个具体的配置文件,用于定义Centos的基础软件源,它包含了源的配置信息,如源的名称、GPG密匙、URL(目标服务器的地址和下载链接)等。通过这个配置文件,yum知道从哪里获取CentOS的软件包及其软件项,从而能够正确的进行软件的安装、升级、卸载等操作。

image.png二、Centos的基础软件和扩展软件源

  1. Centos的基础软件源为CentOS-Base.repo、Centos的扩展软件源为epel.repo(需提前安装yum install -y epel-release)。

  2. 基础软件源:包含了支持Centos系统日常工作的基本软件包,这些软件包是系统正常运行所必需的;扩展软件源除了包含基本软件包,还包含了其他各类软件,这些软件虽然不是系统直接所需要的,但对于特定工作或应用场景非常有用。

三、yum源更新(更改yum源中的配置文件)

  1. 步骤1:备份当前的yum源,以便出现问题时可以恢复。

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

  1. 步骤2:下载新的yum源文件。可以从CentOS官网或国内可靠的镜像站点下载,默认情况下,新的yum源文件会以.repo为扩展名,存储在/etc/yum.repos.d/CentOS-Base.repo文件中(wget命令用于从网络上自动下载文件)。

wget https://repo.huaweicloud.com/centos/

  1. 步骤3:清除yum缓存,以便系统能够识别新的yum源。

yum clean all

  1. 步骤4:更新yum源,以便系统能够识别新的yum源文件中的软件包信息。

yum makecache

  1. 步骤5:测试新的yum源。更新yum源后,用以下命令测试新的yum是否能够正常工作。

yum list

四、云服务器、软件谁提供的的,为什么呢?

  1. 既得利益者,依托于这款操作系统对应的开发者,一般为商业公司、开源社区、独立的开发者等(希望这个社区变得越来越好,且有强大的使命感)。

  2. 操作系统的侧重点不同,开发配套的工具、配套资料不同,主打的调性不同,基准不同,吸引的人不同,配套的核心资源、文档有侧重点,吸引的开发者也有侧重点,开发出的软件也有侧重点,整个生态便形成了不同方向的操作系统。

2. 开发工具

3. 编辑器vim

一、快速认识一下vim

vim是一款多模式的编辑器,vim里面有很多子命令,用于编写和编辑各种文本文件,包括程序代码和配置文件等,是vi的升级版。

二、vim常见模式的切换

:help vim-modes

  • 功能:在底行模式中输入,查看vim所有模式。

各个模式的功能 :

  1. 命令/正常/普通模式:vim打开时,默认的模式,所有输入都被当做命令来处理,除非你误触了模式切换的命令。用于控制屏幕光标的移动,字、字符、行的删除,移动/粘贴、复制某区段等。

  2. 插入模式:用于输入、修改文本。

  3. 底行/末行模式:用于查找字符串,列出行号,文件替换等。

  4. 替换模式:允许用户替换已有的文本,可以对文本进行任意编辑。

  5. 视图模式:可以进行各种选择操作。eg:移动光标hgkl来选择我想要操作的文本块,选中之后,可以摁shift+i进入插入模式来添加内容,或者摁d来删除选中的文本。

image.png
各个模式之间的切换 :

  • 任何模式 -> 命令模式 :摁Esc键。
  • 任何模式 -> 视图模式 : ctrl v。
  • 命令模式 -> 插入模式:i(光标定位到最开始位置处)、a (光标定位到开始的下一个位置处)、o(光标定位到开始位置的下一行起始位置处)。
  • 命令模式 -> 底行模式 :shift ; 。
  • 命令模式 -> 替换模式 :shift r(R)。

三、vim常见模式下的命令集

  1. 命令模式下

控制屏幕光标的移动命令
shitf 4 : $,光标定位到当前行的最右侧结尾处。
shift 6 : ^,光标定位到当前行的最左侧开始处。
shift g : G,光标定位文本的最结尾。
n shift g : 光标定位到文本的第n行。
gg : 光标定位到文本的最开始。
h : 光标单步向左移。
j :光标单步向下移。
k:光标单步向上移。
l:光标单步向右移。
w : 光标按照"单词"在行内向后进行移动。
b : 光标按照"单词"在行内向前进行移动。

删除命令
(n) dd :批量化删除一行或多行。
(n)x :批量化删除当前光标所在的字符 或 当前光标所在以及往后的n个字符。
(n) shift x : 批量化删除当前光标所在的前一个字符 或 当前光标所在往前的n个字符。

复制命令
(n) yy : 复制一行或多行。
(n) p : 如果和yy结合,构成"复制粘贴",在光标的下一行粘贴一行或多行复制的内容,如果和DD结合,构成"剪切",移动粘贴一行或多行删除的内容。
shift · :~,大小写进行替换。

替换命令
(n) r : 批量替换当前光标所在的字符 或 当前光标所在以及往后的n个字符。
shift r : R,切换为替换模式,可以对文本进行任意位置替换,即:任意进行编辑。

撤销上次操作
u : 撤销。
ctrl r : 对撤销进行撤销。

其他功能命令
shift 3 : #,高亮查找,再摁n键表示跳到下一个查找的地方。
vim 文件 +行号:打开vim时,光标自动跳到指定的行。
shift zz : 保存并退出vim。

  1. 底行模式下

set nu : 设置行号。
set nonu : 取消行号。
!命令:不退出vim前提下,支持该命令的功能。
vs 文件名:打开新的界面,形成了多终端,如果在新的界面底行模式执行了w,就会在该目录下创建新文件。
ctrl ww : 光标在多终端进行切换。
wq(保存并退出)、w(保存)、q(退出),后面接感叹号!表示强制做、wq!(保存并强制退出)。

3.批量化加注释、去注释

加注释:ctrl v -> hjkl进行区域化选择 -> shift i -> // -> Esc。
去注释:ctrl v -> hjkl进行区域化选择 -> d

4. 编译器gcc、g++

一、快速认识以下gcc、g++

  1. gcc、g++都是编译器,gcc只能用于编译C语言,g++即适用于编译C语言,又适用于编译C++语言(推荐)。

  2. -o选项:在gcc、g++编译器中用于指定输出文件的名称,让开发者控制可执行文件或者库文件的名称。

二、程序的翻译过程 — gcc选项

  1. 语言和编译器的自举过程

是先有的语言,还是先有的用该语言编写的编译器? 先有语言,再有用该语言编写的编译器。

  • 程序的翻译过程,实质是将高级语言,转换为二进制,生成可执行文件(软件)。

  • 编写C语言 -> 用低级语言(汇编语言)编写的汇编编译器来编译C语言 -> 生成可执行文件,形成了C语言。

  • 编写用C语言编写的C编辑器 -> 用低级语言(汇编语言)编写的汇编编译器来编译C语言 -> 生成可执行文件, 形成了C编译器 -> 以后使用用C写的C编译器 -> 来编译用C语言写的文件。

  • C编译器优化版本V2 -> 用C编译器版本V1来编译 -> 生成可执行文件,形成了V2版本的编译器。

  • C语言不会直接被编译为为二进制文件,需要先被编译为汇编语言、然后再把汇编代码编译为二进制文件。

  1. 预处理

gcc -E 源文件test -o 目标文件test.i :从现在开始进行程序的翻译过程,当预处理执行完后,就停下来。

  • 工作:去注释、宏替换、头文件展开、条件编译。

a. 头文件展开:本质是在预处理阶段,将头文件的内容拷贝到源文件中。

b. 条件编译:本质是对代码进行动态裁剪,主要是适用预处理指令来实现的,eg:ifdef、ifndef、elif、endif等。两个应用:防止头文件被重复包含(#ifndef -> #define -> endif)、对多版本进行功能维护(如专业版和免费版,有些功能重叠)。

c. -D选项:定义宏及其值。在条件编译中,通过给编译器传递不同的宏值,来进行对代码的动态裁剪。

#include<stdio.h>
  2 
  3 //#define VERSION1 1
  4 //#define VERSION2 2                                                                                                                         
  5 
  6 int main() 
  7 {
  8 #ifdef VERSION1  //条件编译
  9     printf("Hello Version 1.0\n");
 10 #elif VERSION2
 11     printf("Hello Version 2.0\n");
 12 #else
 13     printf("Hello Free Version\n");
 14 #endif
 15     return 0;
 16 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

image.png

  1. 编译

gcc -S test.i -o test.s : 从现在开始进行程序的翻译过程,当编译执行完后,就停下来。

  • 工作:将C语言转化汇编语言。
  1. 汇编

gcc -c test.s -o test.o : 从现在开始进行程序的翻译过程,当汇编执行完后,就停下来。

  • 工作:将汇编语言转化二进制语言。且生成可重定位的目标二进制文件(.o),不能被执行。
  1. 链接

gcc test.o -o mycmd : 生成可执行程序,-o指定可执行程序文件名。

  • 工作:模块组合(将多个源文件组合起来,形成一个可执行程序)、引人库函数、解决符号引用、优化与调整等。

  • 链接器将可执行程序与库中的函数进行链接, 确保程序在运行时能够调用这些函数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/742304
推荐阅读
相关标签