linux基础:3.linux基础环境开发工具和配置。

linux基础环境开发工具和配置

    • 一.学习yum工具进行软件安装:
      • 1.什么是yum:
      • 2.查看软件包:
      • 3.安装和删除:
      • 4.yum生态:
    • 二.vim的使用:
      • 一.快速介绍一下vim
      • 二.vim正常模式:
      • 2-1:命令模式
        • 1.光标移动:
        • 2.删除文字
        • 3.复制:
        • 4.替换:
      • 2-2:底行模式
    • 三.vim编辑器配置:
        • 1.配置文件的位置:
    • 四:编译原理+gcc和g++的使用:
      • 1.gcc 和 g++ 快速使用:
      • 2.生成可执行程序的过程:
        • 1,预编译(预处理):
        • 2.编译
        • 3.汇编
        • 4.链接:
      • 3.动静态库:
        • 1.库的意义:
        • 2.动态库:
        • 3.静态库:
        • 4.总结:
    • 五:make和Makefile linux下的项目自动化构建工具:
      • 1.快速使用:
      • 2.理解依赖关系和依赖方法:
      • 3.内容补充:
        • 1.连续多次使用make
        • 2.伪目标:
        • 3.符号替代-->标准
    • 六:linux下的一个小程序:进度条
      • 1.准备知识:
      • 2.倒计时:
      • 3.简单的进度条!
        • 1.新建文件夹,创建文件:
        • 2.对文件进行简单内容的编辑:
        • 3.去写Makefile文件进行简单测试!
        • 4.进度条版本1:
        • 4.进度条版本2:随机下载量:
        • 5.色块进度条!
    • 七:git的使用:
      • 1.在gitee创建仓库!
      • 2.克隆远程仓库到本地:
      • 3.文件添加到克隆目录下:
      • 4.画图说明--->

一.学习yum工具进行软件安装:

1.什么是yum:

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

yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.

2.查看软件包:

我们可以通过==yum list ==命令进行软件包的查找但是软件包是非常多的,这个时候我们需要使用grep进行软件包的筛选!

yum list | grep (需要查找的软件包)
请添加图片描述

在这里插入图片描述

3.安装和删除:

安装:

yum install -y 软件名称

删除:

yum remove -y 软件名称

注意:
1.安装软件必须在有网络的情况下进行(服务器或者虚拟机)ping www.biduo.com 进行检测。
2.因为安装软件的操作是需要在根目录下进行操作,所以使用命令进行软件安装的时候需要是root或者sudo进行root提权。
3.yum安装软件只能一个一个进行有顺序的,不能一个软件正在安装又去安装下一个软件。

4.yum生态:

请添加图片描述

1.yum如何得知目标服务器的地址和下载链接,通过开发者提供的:软件工具。
2.在一个大环境下面:
2-1:(在一个大社区下面)有人发出问题就有人解决问题。谁获取到了利益?使用相同环境的开发者获取到了利益。
2-2:在一个社区下面进行软件的编写会使社区越来越好。

补充:
请添加图片描述

二.vim的使用:

一.快速介绍一下vim

1.打开一个vim默认进入一个命令模式:
2.输入I切换成插入模式:
3.shift+:切换成行底模式。
4.按下ESC进入命令模式:

二.vim正常模式:

vim正常模式包括有命令模式,插入模式,底行模式。
补充:在vim模式下不能直接进行服务器的退出,这个时候文件没有保存退出,下一次进入的时候在相同目录下会有一个文件名.swap

请添加图片描述

2-1:命令模式

1.光标移动:

vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格

按「G」:移动到文章的最后
按「 $ 」:移动到光标所在行的“行尾”
按「^」:移动到光标所在行的“行首”

按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l

按[gg]:进入到文本开始
按[shift+g]:进入文本末端
按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页

2.删除文字

「x」:每按一次,删除光标所在位置的一个字符
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」:删除光标所在行
「#dd」:从光标所在行开始删除#行

n+dd 剪切n行,n+p 粘贴n行。

3.复制:

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完
成复制与粘贴功能。

4.替换:

shift+~ :在命令模式下光标位置的快速切换大小写
r+需要替换的字符 可以把光标位置进行替换
shift+r --》R 进入替换模式在这个模式下可以直接在光标下进行输入替换。

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
「ctrl + r」: 撤销的恢复

更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

2-2:底行模式

w :文件保存
q:文件退出
一般可以正常退出如果退出不了可以加一个!进行强制退出。
1.wq :文件保存并且退出
2.set nu 列出行号
3. :(冒号) + 行号 跳到该行!
4./+(寻找的字符) 按n向后继续寻找!
5.?+(寻找的字符) 按n向前继续寻找!
6.使用vim打开其他的文件:vs + 文件名称

三.vim编辑器配置:

1.配置文件的位置:

在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
==而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,
通常已经存在一个.vimrc文件,如果不存在,则创建之。==切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~打开自己目录下的.vimrc文件,执行 vim .vimrc

四:编译原理+gcc和g++的使用:

1.gcc 和 g++ 快速使用:

1.gcc 【选项】要进行处理的文件 【选项】生成的文件
2.一般来说第二个选项都是-o (-o需要紧跟目标文件)

2.生成可执行程序的过程:

1,预编译(预处理):

1.命令 gcc -E text.c -o text.i
2.主要内容:
2-1:注释的去除,宏替换,条件编译,头文件的包含。
请添加图片描述

2.编译

1.命令:gcc -S text.i -o text.s(汇编代码)
2.主要内容:
2-1:语法分析,语意分析,词法分析,符号汇总。
请添加图片描述
请添加图片描述

3.汇编

1.命令:gcc -C text.s -o text.o
2.把汇编代码转换为机器可以识别的二进制文件!

请添加图片描述

4.链接:

1.上面的三个过程可以统称为编译阶段。
2.主要命令 gcc text.o -o text
3.进入链接的过程
3-1:主要有动静态库两种!

3.动静态库:

1.库的意义:

1.提高了编写代码的效率,减少了重复冗余的工作。
2.有动态库和静态库!

2.动态库:

1.一般gcc进行编译链接使用的都是动态链接,通过保存一个地址通过地址找到这个方法去解决问题。
2.优点:
节省空间,不会出现重复代码。
3.缺点:
对动态库比较依赖,并且找到方法和回来的过程需要时间的!

4.使用动态链接:
gcc text.c -o text

3.静态库:

1.一般gcc需要通过不同的命令使用静态链接,直接拷贝一份大的库文件来进行本地的使用!

2.优点:
不依赖库,节省时间,同类型的平台可以直接使用。

3.缺点:
文件的占用的空间比较大,容易产生重复代码的使用浪费空间!

4.使用静态链接需要一个前提安装静态库:

centos7 下安装c/c++静态库命令:

yum install -y glibc -static C语言
yum install -y libstdc++ -static C++

5.使用静态链接:

命令:gcc text.c -o text -static

4.总结:

1.file + 可执行文件
查看动静态依赖!
请添加图片描述
2.ldd + 可执行文件
可以查看依赖库的情况!
请添加图片描述

文件后缀:
请添加图片描述

五:make和Makefile linux下的项目自动化构建工具:

1.快速使用:

1.构建一个Makefile/makefile : 必须是这两个文件名称
2.vim 打开 Makefile/makefile 文件进行配置:
3.配置文件格式:
目标文件:依赖文件
[Tab] 依赖文件生成目标文件方法

  1. make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
    请添加图片描述

2.理解依赖关系和依赖方法:

请添加图片描述

1.依赖具有递归性:

请添加图片描述
请添加图片描述

3.内容补充:

1.连续多次使用make

请添加图片描述

提示产生的maybin已经是最新的了!
使用stat + 文件 可以查看文件的详细信息:
Access : 创建时间
Modify : 内容修改时间
Change:属性修改时间:
touch 已经存在的文件修改文件的ACM时间都改为当前时间!

补充:内容修改------>影响到属性修改时间------>内容修改导致大小改变,大小是属性的范围。

在这里插入图片描述

连续多次的使用mak命令会去检测依赖文件和目标文件的时间如果目标文件的时间要晚于依赖文件那么就说明再一次生成目标文件没有修改。如果依赖文件的时间晚于目标文件说明依赖文件改变需要生成新的目标文件并且覆盖原来的目标文件!

2.伪目标:

本身是一个虚假伪造的目标,这个伪目标不希望生成什么文件或者东西的。伪目标只想要执行依赖方法。一般伪目标会声明在不需要生成目标文件的只需要执行依赖方法的操作之前并且伪目标的出现防止Makefile中的目标文件和工作目录下的名字冲突提高了执行Makefile的效率!
请添加图片描述

3.符号替代–>标准

1.依赖文件和依赖目标的符号替换:
$@ ---->替代目标文件
$^ ------>替代依赖文件
2.应该在依赖方法中使用这两个字符!

请添加图片描述
请添加图片描述

2.依赖方法中或者说全局的符号替换:

在Makefile文件开头进行声明
1.把想要替换为的字符(字符串) = 原来应该写的字符(字符串)
2.使用替换字符需要:$(替换字符) 这样的使用格式!
在这里插入图片描述

六:linux下的一个小程序:进度条

1.准备知识:

1.标准输出流:使用printf如果 “” 末尾使用\n字符意思是将标准输出流中的内容打印到当前光标的所在行并且移动到下一行的行首。
2.我们键盘上的按键:enter 包括了回车+换行的功能。
3.回车:\r 光标回到当前行的开头。作为printf的字符串末尾不会把标准输出中的内容打印到屏幕上的需要使用函数fflush()函数进行对应标准输出流的刷新!
4.换行一般和回车同时使用组成了键盘上的enter,老式的键盘的形状也可以说明这样的一个概念!

请添加图片描述

2.倒计时:

1.使用usleep函数:控制程序休眠时间()中的时间单位是微秒!
2.1s = 1000ms 1ms = 1000 vs
3.头文件是:unistd.h

请添加图片描述

3.简单的进度条!

1.新建文件夹,创建文件:

请添加图片描述

2.对文件进行简单内容的编辑:

请添加图片描述

3.去写Makefile文件进行简单测试!

请添加图片描述
在这里插入图片描述

4.进度条版本1:
  9 void version_1()10 {//1.保存符号的数组!11     char buffer[103];12     memset(buffer,'\0',sizeof(buffer));13 	//2.开头保存一个>头用来指方向!14     int count=0;15     buffer[0]=head;16 	//2.循环打印进度条每次打印结束都把光标回到开头!17     while(count<=100)18     {19         printf("[%-100s] [%d%%] []\r",buffer,count);20         fflush(stdout);21         buffer[count]=mov;22         count++;23         buffer[count]=head;24 		//控制= 和 > 位置放置!25         if(count==100)26         {27             buffer[count]=mov;28         }29         usleep(50000);30     }31 }   
4.进度条版本2:随机下载量:

在这里插入图片描述
在这里插入图片描述
请添加图片描述

5.色块进度条!

在这里插入图片描述

和进度条改变的部分!
在这里插入图片描述

效果图展示!
请添加图片描述

七:git的使用:

1.在gitee创建仓库!

请添加图片描述

2.克隆远程仓库到本地:

在这里插入图片描述
命令:git clone 【url】(远程仓库地址!)

在这里插入图片描述

3.文件添加到克隆目录下:

在这里插入图片描述

4.画图说明—>

处于远程拷贝的目录下面!

请添加图片描述
请添加图片描述

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

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

相关文章

strtok函数详解:字符串【分割】的利器

目录 一&#xff0c;strtok函数简介 二&#xff0c;strtok函数的用法 三&#xff0c;strtok函数的注意事项 一&#xff0c;strtok函数简介 strtok函数可以帮助我们将一个字符串按照指定的分隔符进行分割&#xff0c;从而得到我们想要的子字符串。 &#x1f342;函数头文件&am…

【Qt绘制小猪】以建造者模式绘制小猪

效果 学以致用&#xff0c;使用设计模式之建造者模式绘制小猪。 代码 接口&#xff1a;申明绘制的步骤 PigBuilder.h #ifndef PIGBUILDER_H #define PIGBUILDER_H#include <QObject> #include <QPainter>class PigBuilder : public QObject {Q_OBJECT public:ex…

记录C# WinForm项目调用Rust生成的dll库

一、开发环境 1.RustRover (version&#xff1a;2023.3 EAP) 2.Visual Studio 2019 (version&#xff1a;16.11.30) 3.Windows 10 64位 OS 4.WinR&#xff1a;控制台程序&#xff0c;cmd.exe 二、使用RustRover编译Rust脚本为dll 1.下载安装Rust&#xff0c;https://www.…

Spark大数据应用实战

系列文章目录 送书第一期 《用户画像&#xff1a;平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …

计算机丢失mfc100.dll如何恢复,详细解析mfc100.dll文件丢失解决方法

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;比如“mfc100.dll丢失”。这是因为动态链接库&#xff08;DLL&#xff09;文件是Windows操作系统的重要组成部分&#xff0c;它们包含了许多程序运行所需的函数和数据。当这些DLL文件丢失或损坏时&#x…

Selenium爬取内容并存储至MySQL数据库

前面我通过一篇文章讲述了如何爬取博客摘要等信息。通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的。这篇文章主要讲述通过Selenium爬取我的个人博客信息,然后存储在数据库MySQL中,以便对数据进行分析,比如分析哪个时间段…

挑战100天 AI In LeetCode Day06(热题+面试经典150题)

挑战100天 AI In LeetCode Day06&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-82.1 题目2.2 题解 三、面试经典 150 题-83.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&am…

17.复制字符串 ,包括\0

#include<stdio.h> #include <cstring>int main(){int len1,len2;char s1[44];char s2[33];scanf("%s",s1);scanf("%s",s2);len1strlen(s1)1;printf("先s1的字符长度为&#xff1a;%d\n",len1) ;strcpy(s1,s2) ;printf("复制字…

【算法与数据结构】39、LeetCode组合总和

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;这道题当中数字可以多次使用&#xff0c;那么我们在递归语句当中不能直接找下一个candidate的元素&…

Leetcode—102.二叉树的层序遍历【中等】

2023每日刷题&#xff08;二十四&#xff09; Leetcode—102.二叉树的层序遍历 C语言BFS实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ /*** Return an array of arr…

OpenHarmony,奏响中国基础软件的“光辉岁月”

梦想需要多久的时间&#xff0c;多少血和泪&#xff0c;才能慢慢实现&#xff1f; 天地间任我展翅高飞&#xff0c;谁说那是天真的预言&#xff1f; 《光辉岁月》歌词中的这两个问题&#xff0c;恰好可以送给今天的中国基础软件事业。 曾几何时&#xff0c;我们认为中国基础软件…

16.字符连接

#include<stdio.h> #include <cstring> int main(){char s1[44];char s2[33];scanf("%s",s1);scanf("%s",s2);strcat(s1,s2) ;printf("连接两个字符为&#xff1a;%s ",s1); return 0;}

【ES专题】Logstash与FileBeat详解以及ELK整合详解

目录 前言阅读对象阅读导航前置知识笔记正文一、ELK架构1.1 经典的ELK1.2 整合消息队列Nginx架构 二、LogStash介绍2.1 Logstash核心概念2.1.1 Pipeline2.1.2 Event2.1.3 Codec (Code / Decode)2.1.4 Queue 2.2 Logstash数据传输原理2.3 Logstash的安装&#xff08;以windows为…

Python测试框架之pytest快速入门

pytest是一种流行的Python测试框架&#xff0c;支持创建简单的单元测试&#xff0c;也支持创建复杂的功能和集成测试。它提供了一系列有用的功能&#xff0c;能够方便地编写&#xff0c;组织和运行测试用例&#xff0c;并生成丰富的测试报告。 pytest的主要特点包括&#xff1…

软件测试面试题【2023最新合集】

收集了各大公司的面试经验&#xff0c;现整理出来&#xff0c;希望能给正在找工作的志同道合的小伙伴一些指引&#xff0c;本文会持续更新的哦。 1、 CPU 和 GPU的区别 一个是通用计算&#xff0c;一个是专用计算。 CPU主要负责操作系统和应用程序&#xff0c;GPU主要负责跟…

Python爬虫框架Scrapy:实现高效数据抓取

目录 一、引言 二、Scrapy框架概述 1、Scrapy框架特点 2、Scrapy框架结构 三、Scrapy框架的使用 1、安装Scrapy框架 2、创建Scrapy项目 3、创建爬虫 4、运行爬虫 四、Scrapy框架常见问题及解决方案 1、请求被网站封禁 2、处理动态加载的页面 3、避免被网站检测到爬…

进程管理(二)

进程并发制约关系及临界区 (3)比如A的n为MAX,此时B执行buf[Max]出错。 临界区是访问临界资源的代码。 par并发执行 进程同步机制准则 让权等待:主动让位 进程互斥访问临界资源的软件解决方案 算法1——设置访问编号 no_op是空指令,做空操作,空转指令。no_op依然会占…

11.8 33oj 模拟赛总结(时间安排 + 题解(数学 + 二分 + 括号匹配DP + 性质DP))

文章目录 考试时间及策略考试结果赛后总结题解Balance AddictsBoboniu and StringBracket InsertionConveyor 考试时间及策略 7:40 - 8:00 开题。T1 应该是个dp, 但是好像有点恶心。T2是个神秘构造。T3是个求随机括号匹配的概率&#xff0c;一眼应该是个 n 3 n^3 n3 的…

RabbitMQ 消息中间件

消息中间件 1、简介 消息中间件也可以称消息队列&#xff0c;是指用高效可靠的消息传递机制进行与平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型&#xff0c;可以在分布式环境下扩展进程的通信。 当下主流的消息中间…

YOLOX: Exceeding YOLO Series in 2021(2021.8)

文章目录 AbstractIntroduction介绍前人的工作提出问题解决 YOLOXYOLOX-DarkNet53Implementation detailsYOLOv3 baselineDecoupled headStrong data augmentationAnchor-freeMulti positivesSimOTAEnd-to-end YOLOOther BackbonesModified CSPNet in YOLOv5Tiny and Nano dete…