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.画图说明—>

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

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

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

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

相关文章

1、C语言面向对象引入类和对象的概念

什么是类和对象 类 类是用户自定义的一种数据类型&#xff0c;也称类类型——C语言中的结构体 对象 类的一种具象 代码测试 #include <stdio.h>//类 struct Animal{ char name[12];//成员属性 int age; char sex; void (*peat)();//成员方法 void (*pbeat)(); };void…

【排序算法】 快速排序(快排)!图解+实现详解!

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 算法—排序篇 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️快速排序的概念☁️快速排序的由来☁️快速排序的思想☁️快速排序的实…

C++打怪升级(十)- STL之vector

~~~~ 前言1. vector 是什么2. 见见vector的常用接口函数吧构造函数无参构造函数使用n个val构造拷贝构造使用迭代器范围构造初始化形参列表构造 析构函数赋值运算符重载函数元素访问[]运算符重载函数访问at函数访问front函数back函数 迭代器相关正向迭代器反向迭代器 容量相关si…

Head First Java 第二版

不管你的程序有多大&#xff0c;一定都会有一个main()来作为程序的起点。Java是强类型语言。float f23.5f 如果不加上f&#xff0c;就会被Java当做double处理。对于任意一个Java虚拟机来说&#xff0c;所有的引用大小都一样&#xff0c;但是不同的Java虚拟机可能会以不同的方…

多元高斯分布

下面我们来看一下多元高斯分布&#xff0c;叫做 multivariative 高斯分布&#xff0c;也就是目前的情况是向量的形式&#xff0c;也就是说我的 x 它是一个向量&#xff0c;那这个情况下我们的高斯分布应该怎么去表示&#xff1f;我们这里面重点还是来看一下它的一个表示的方法&…

golang 2018,go 1.19安装Gin

GOPROXYhttps://mirrors.aliyun.com/goproxy/ 一致提示URL不能有点&#xff0c;给我整郁闷了&#xff0c;换了这个地址好了 但是一致提示zip的包问题&#xff0c;最后还是不行又换回七牛 NEWBEE&#xff01; [GIN-debug] Environment variable PORT is undefined. Using por…

BIM、建筑机器人、隧道工程施工关键技术

一、BIM简介 &#xff08;一&#xff09;BIM概念 BIM&#xff08;Building Information Modeling&#xff09;&#xff0c;建筑信息模型。该技术通过数字化手段&#xff0c;在计算机中建立虚拟建筑&#xff0c;该虚拟建筑提供从单一到完整、包含逻辑关系的建筑信息库。信息库…

ZZ308 物联网应用与服务赛题第B套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;B卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用的…

Android codec2 视频框架 之输入buffer

文章目录 输入端的内存管理输入数据包buffer结构体的转换 主要的流程如上&#xff0c; 申请内存在CCodecBufferChannel&#xff0c;申请之后回调到MediaCodec。然后应用从MediaCodec获取 将解码数据放到buffer中&#xff0c;CCodecBufferChannel在将这块buffer 送到componet模块…

IS-LM模型:从失衡到均衡的模拟

IS-LM模型&#xff1a;从失衡到均衡的模拟 文章目录 IS-LM模型&#xff1a;从失衡到均衡的模拟[toc] 1 I S − L M 1 IS-LM 1IS−LM模型2 数值模拟2.1 长期均衡解2.2 政府部门引入2.3 价格水平影响2.4 随机扰动因素 1 I S − L M 1 IS-LM 1IS−LM模型 I S − L M IS-LM IS−LM是…

51单片机汇编-点亮一个led

文章目录 前言1.打开IDE2.设置编辑器3.设置输出4. 原理图5.编写代码6 编译7.下载8.其它代码1.LED闪烁2.跑马灯 前言 51单片机基础 51汇编实战 本章主要介绍打开一个led,具体采用51汇编 1.打开IDE 选择STC89C52RC 后缀是.asm 2.设置编辑器 3.设置输出 4. 原理图 5.编写代码 …

HR人才测评,采用线上测评做春招秋招

从人力资源管理的工作&#xff0c;已经有好些年了&#xff0c;我只想说这不是一个有创意和创造性的工作&#xff0c;因为大部分时间我都在从事数据方面的工作。关于公司内部的文案工作先且不说&#xff0c;这里分享下我做招聘工作的过程。 每年春秋两季的校招&#xff0c;算是…

通过51单片机控制SG90舵机按角度正反转转动

一、前言 本文介绍如何通过51单片机控制SG90舵机实现角度的正反转转动。SG90舵机是一种常用的微型舵机&#xff0c;具有体积小、重量轻、结构简单等特点&#xff0c;被广泛应用于机器人、遥控模型和各种自动控制系统中。 使用51单片机&#xff08;STC89C52&#xff09;作为控…

5-爬虫-打码平台、打码平台自动登录打码平台、selenium爬取京东商品信息、scrapy介绍安装、scrapy目录结构

1 打码平台 1.1 案例 2 打码平台自动登录打码平台 3 selenium爬取京东商品信息 4 scrapy介绍安装 5 scrapy目录结构 1 打码平台 # 1 登录某些网站&#xff0c;会有验证码---》想自动破解-数字字母&#xff1a;python模块&#xff1a;ddddocr-计算题&#xff0c;成语题&#xf…

CSS3 边框、圆角、背景

CSS3是最新的CSS标准。CSS3被拆分为“模块”。一些最重要的CSS3模块如下&#xff1a;选择器、盒模型、背景和边框、文字特效、2D/3D转换、动画、多列布局、用户界面。 一、CSS3边框&#xff1a; 用CSS3&#xff0c;可以创建圆角边框、添加阴影框&#xff0c;并作为边界的形象而…

【单目测距】单目相机测距(三)

文章目录 一、前言二、测距代码2.1、地面有坡度2.2、python代码2.2.1、旋转矩阵转角度2.2.2、角度转旋转矩阵2.2.3、三维旋转原理 (Rotation 原理)2.2.4、完整代码 2.3、c 代码 一、前言 上篇博客【单目测距】单目相机测距&#xff08;二&#xff09; 有讲到当相机不是理想状态…

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("复制字…

前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(三)

知者乐水&#xff0c;仁者乐山。 XMLHttpRequest AJAX原理 - XMLHttpRequest 前面与服务器交互使用的不是axios吗&#xff1f; ajax并不等于axios 我们使用的axios的内部&#xff0c;实际上对XHR对象/原理 的封装 为什么还要学习ajax&#xff1f; ①在一些静态网站项目中…

UPLOAD-LABS1

less1 (js验证) 我们上传PHP的发现不可以&#xff0c;只能是jpg&#xff0c;png&#xff0c;gif&#xff08;白名单限制了&#xff09; 我们可以直接去修改限制 在查看器中看到使用了onsubmit这个函数&#xff0c;触发了鼠标的单击事件&#xff0c;在表单提交后马上调用了re…

【Android】Dagger2 框架设计理念和使用方式详解

文章目录 Dagger 框架作用基本使用方法引入依赖创建 Object创建 Module创建 Component向 Activity 注入对象 Component 内部单例全局单例自定义 Scope关于单例作用域的理解注入多种同类型对象Component 依赖Component 继承传递 Activity Dagger 框架作用 这里&#xff0c;我们…