0


Linux 基础环境的开发工具以及使用(上)


在Windows操作系统上,大多数都是以图形化界面的方式进行的,一般都是在官网或者对应的应用

商店进行下载,有时候对一个指定软件的下载,还涉及到多个依赖项,需要我们用户自己手动下载

安装对应的依赖项

对于Linux 操作系统就不一样了,都是以命令行的方式进行的(当然也是支持图形化界面),当我

们下载一个软件的时候,需要找到对应的源程序,经过编译,才能得到可执行程序,但是这样比较

麻烦:应该软件的下载,可能涉及到许多个依赖项,当源代码很大的时候,进行编译是比较消耗时间。

这时候我们就需要用到软件包管理器(yum):通过包管理器我们可以直接进行对应软件的安装

(软件所需要的依赖项以及源代码都已经进行了编译)。此时也不需要我们用户自己去找对应 的

依赖项,使用yum 源,直接一步到位。

可以把软件包管理器理解成一个应用商店,把软件包理解成一个个APP,使用yum 进行指定软件

的下载就好比使用手机进行软件下载一样。

•yum 的工作原理
  • yum服务器所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了,ftp或者httpd的形式都以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息做成一张"清单",这张"清单""就是描述每个rpm包的spec文件中信息。

  • yum client端client每次调用yum install或者search的时候,都会去解析/etc/yum.repos.d下面所有以.repo结尾的配置文件(即yum源),这些配置文件指定了yum服务器的地址。yum会定期去"更新"yum服务器上的rpm包"清单",然后把"清单"下载保存到yum自己的cache里面,根据/etc/yum.conf里配置(默认是在/var/cache/yum下面),每次调用yum装包的时候都会去这个cache目录下去找"清单",根据"清单"里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器下载rpm包安装。(前提是不存在rpm包的cache)

       yum扩展源:
    
      通俗来讲,yum 可以理解成一个指定 的官方的网站,我们使用yum 下载的东西都是安全的,         当我们下载一些其他的东西时候,可能在yum 源上不存在或者存在一些警告,此时在yum 扩            展源进行下载即可。
    
     **下载 yum  扩展源的指令如下:**![](https://i-blog.csdnimg.cn/direct/d08cb62e93304dc590c875dd25f84f05.png)
    

1)确保系统安装 yum 这个工具

2)使用yum 进行相关软件的下载

** 语法:**

(sudo) yum install 指定的软件

使用yum下载gcc

注意:对于非 root 用户是不具备下载的权限的,此时 sudo 表示对当前的非 root 用户进行权限提

升,使之具有下载软件的权限。(可能有的即使输入 sudo 也表示权限不支持,因为此时没有对非

root 用户进行配置)。

对于非 root 权限提升的相关操作可以查看以下的博客:sudo 进行权限提升

3)卸载使用yum 下载的相关软件

语法:

sudo yum remove +卸载的软件名字

此指令含义:卸载安装的sl这个软件

2.vim 编辑器的使用以及配置

vim 是一种多模式的编辑器。

与vi的区别,简单的说就是对vi的一个升级版本。

1)vim 的安装

yum install vim

2) vim 的三种模式

命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者

到 末行模式。

插入模式:只有在插入下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后

面用的最频繁 的编辑模式。

末行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

3)vim 下相关指令的使用

3.1)
光标的移动:

gg光标定位到文件内容的第一行的开始G 光标定位到文件内容的最后一行开始nG 定位光标到指定行的开始(n 是指定的一个数字 >= 1)shift + ^ 光标移动到当前行的开始shift + $ 光标移动到当前行的结束w光标会以单词为基本单位,进行行内跨行的移动(向右移动)b光标会以单词为基本单位,进行行内跨行的移动(向左移动)

3.2)
文件内容的复制,粘贴,删除,剪切:

n yy以光标所在行为基准,复制光标所在 n行 的内容 np粘贴 n 行内容到光标所在行的下一行ndd删除/ 剪切 n行的内容从光标所在的行开始

3.3)
撤销以及反撤销

u撤销ctrl +r 撤销之前的撤销

3.4)
末行模式相关指令:

w保存q退出wq 或 ZZ保存并退出q! 或 ZQ不保存退出set nu显示行号set nonu隐藏行号/搜索的文本搜索

4)对vim 进行相关的配置

对于vim 来说,他不是一个文本编辑器嘛,在日后不可避免的使用他进行相关代码的编写,但是对

于没有经过配置过的vim 使用起来难免有点挫,比如语法高亮,代码缩进,语法提示,字体大小,

以及字体颜色设置,内容的行号设计等等。

可能对于“小白”来说,我都还不会使用vim ,就让我对vim 进行配置,这难免有点困难,别着急,

咱可以进行相关插件的下载安装。

切换到指定的一个用户(建议非root 用户):执行一下命令

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

按着提示出入对应的root 密码,即可安装成功。

VimForCpp 的卸载:

以安装有此插件的用户身份,执行以下的命令:

bash ~/.VimForCpp/uninstall.sh

对于新手来说,刚开始使用vim 难免有所困难,自己一定要多多练习,熟能生巧哟~~~

3.gcc / g++ 编译器的使用

我们既然已经会使用vim 进行相关代码的编写,接下来就需要知道如何对已经编写好的代码进行编

译,直至生产可执行的文件。

1)确保已经安装 gcc / g++ 编译器
sudo yum install gcc / g++
2)文件编译的全过程

2.1)预编译阶段:主要进行头文件的展开,宏替换,去掉注释,条件编译等工作

对应的指令:

gcc -E test.c -o test.i

** 此指令的解释:**告诉编译器对test.c 这个文件 执行预编译的任务,把预编译之后生成的文件内容

存放在test.i这个文件里面。

对应的执行效果见下:

** 2)编译阶段:进行语法分析、词法分析和语义分析,并且将代码优化后产生相应的汇编代码文件**

对应的指令:

gcc -S test.i -o test.s 

指令的解释:告诉编译器对test.i这个文件进行编译并把生产的内容放在test.s这个文件里面

3)汇编阶段:主要是把的汇编文件生成对应的目标文件

对应指令:

gcc -c test.s -o test.o

指令解释:告诉编译器对汇编文件test.s 执行汇编生成对应的目标文件test.o

4)链接:主要是把目标文件与对应的库文件进行链接生成对应的可执行程序(注意:模板文件并不

是一个可执行的文件)

对应的指令:

gcc test.o -o test.exe

指令的解释:对目标文件执行链接生成对应的可执行文件。

4.1)链接分为动态链接和静态链接

动态链接与静态链接的区别:

动态链接是在程序执行的时候才进行链接,并且动态链接生成对应的

文件体积相比较于静态链接形成的文件体积小。

静态链接:是在形成可执行程序之前进行链接,因为需要把对应的库文件内容拷贝到当前文件下。

4.2) 静态库的安装:

3) 头文件的简单介绍

首先思考以下的问题:

为什么我们可以在 Windows 或者Linux 上面进行开发呢???

首先我们必选先安装对应的软件:VS2022,VScode,Pycharm 等等。

其次我们需要具备相关的头文件以及库文件。

在Linux 上面,对应的头文件默认是存放在 **/usr/include **这个目录

4)库文件的简单介绍

在Linux 上面,库文件默认是存放在** / lib64**这个目录下的

以下是截取的部分库文件

对于库文件又分为:静态的库文件和动态的库文件

Linux 上面的库文件在书写形式上的构成: lib(前缀)+ 库的名字 + 后缀

Linux库文件的扩展名(后缀)只有2种形式: .so(动态库) .a(静态库)

Windows 库文件的扩展名: .dll(动态库) .lib(静态库)

库其实是把每个源文件进行编译,再打包封装形成一个大的库文件,以供用户的使用。

5)动,静库的对比

动态库:共享的,比较节省资源(磁盘空间,网络空间,内存空间);所占体积较小

静态库:比较消耗资源;不依赖库,可以独立运行。

编译器在进行链接的时候默认是优先进行动态链接的,当动态库不存在的时候,再进行静态链接

当我们指定链接就以静态链接的时候,若没有静态库,此时编译报错;静态库存在指向静态链接,

而且只进行一次静态链接。

对当前指令的深入认识:首先指定以静态链接的方式;同时也改变了链接的优先级,此时执行链接

的时候对所有的库文件都是以静态链接方式进行的。

查看程序的链接方式:

file 可执行程序的文件名

结语:

以上是对Linux 系统上用到的部分工具的简单介绍,感兴趣的友友们,可以进行深入的研究与讨

论。对于这部分的知识我们需要勤于练习

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/X_do_myself/article/details/144182371
版权归原作者 Solitary_walk 所有, 如有侵权,请联系我们删除。

“Linux 基础环境的开发工具以及使用(上)”的评论:

还没有评论