linux基础开发工具使用

文章目录

    • 一. yum命令
      • yum的使用
    • 二.vim命令(写代码)
      • 各模式的互相转化
        • 命令模式
          • 光标移动的命令
          • 复制,粘贴,剪切,撤销
          • 撤销
          • 字符的转换
          • 字符的添加和删除
          • 查找
          • 注释
          • 清除注释
        • 替换模式
        • 视图模式
      • 裸的vim也可支持多文本编译
      • vim 报错小技巧(光标改动到报错位置)
    • 三.gcc/g++编译器(编译代码)
      • 3.1介绍
        • 3.1.1gcc
          • 3.1.1.1gcc编译指定生成文件
        • 3.1.2g++
      • 3.2背景知识(编译器和编译语言的关系和编译语言的编译过程)
        • 3.2.1编译器和编译语言的关系
        • 3.2.2 编译语言生成程序的过程
      • 3.3 gcc的生成过程
        • 3.3.1预处理解释条件编译
        • 3.3.2链接
          • 3.3.2.1库:
          • 3.3.2.2库的分类:
            • 3.3.2.2.1 静态库
            • 3.3.2.2.2动态库
    • 四.代码自动生成程序(make和Makefile)
      • 4.1解释
        • make是一个插件
        • Makefile是一个解释器(即一个文件)
      • 4.2示例
      • 4.3make
      • 5.1缓冲区
      • 5.2回车
      • 5.3 换行
      • 回车 加换行

一. yum命令

yum可以比作linux的应用商店:

yum的使用

yum install 软件(下载软件)
yum remove 软件(删除软件)
强制下载和删除:
yum install -y 软件;
yum install -y 软件;

二.vim命令(写代码)

定义:一款文本编译器
vim是一款多模式的编译器

各模式的互相转化

在这里插入图片描述

①底层模式
在这里插入图片描述

②命令模式转编译模式
在这里插入图片描述

命令模式
光标移动的命令

gg命令:将光标移动到开头位置;
shift+g:将光标快速定位到代码的最后一行;
n+shift+g:定位到第n行;(这里的n是一个数字)
shift+6:将光标定位到光标所在行的开头位置
shift+4:将光标定位到光标所在行的末尾位置;
由于shift+6就是^;shift+4就是$;
所以就有了锚点的定义:
在这里插入图片描述

H:左移一个字符
J:下移一个字符
** k**:上移一个字符
** I**:右移一个字符
** W后移一个单词
** B
前移一个单词(当遇到不是单词的时候就按一个字符一个字符的走)

复制,粘贴,剪切,撤销

(n) yy :复制从当前行向下数n行的内容;
** (n) p**:粘贴当前行向下数n行;
** (n)dd剪切 ;
** u
撤销粘贴操作;

撤销

** u** 命令模式下撤销刚才的操作;
** ctrl+r**:撤销刚才的撤销操作(命令模式下的u)

字符的转换

** shift+`:按住这两按键不懂就会依次将原本大写的字符转小写**;将原本小写的字符转大写
** n+r+自己想加的字符**批量替换光标所在字符,或者多个字符
替换模式:shift+r;

字符的添加和删除

添加
插入模式进行添加;
删除
向后删除:命令模式:n+x:删除当前光标后n个字符;
向前删除:1.插入模式:直接使用使用Backspace键;
2.命令模式:n+shift+x:向前删除n个字符;

查找

shift+3查找同名的单词;按n会在这些同名单词中跳转;

注释

ctrl+v(转化为视图模式)->j/k两个按键上下选中区域—>shift+i-> //->Esc;
在这里插入图片描述

清除注释

ctrl+v(转视图模式)->上下左右键转选中区域->d
在这里插入图片描述

替换模式

在这里插入图片描述
替换模式会将输入的字符覆盖光标所在的字符;
这里撤销使用:命令模式下的u进行取消;

视图模式

在这里插入图片描述

裸的vim也可支持多文本编译

在这里插入图片描述
1使用vim打开以一个文件;

vim 报错小技巧(光标改动到报错位置)

在这里插入图片描述

三.gcc/g++编译器(编译代码)

3.1介绍

c语言:gcc/g++两者都可;
c++语言:g++
原因:g++是c++的编译器;但是c++兼容c语言;

3.1.1gcc

./a.out如果编译报错
在这里插入图片描述
添加**-std=c99**

3.1.1.1gcc编译指定生成文件

gcc 文件名 -o 生成的文件名
在这里插入图片描述

3.1.2g++

c++文件有三种写法
在这里插入图片描述
在lunix中多使用**.cc**的写法;

3.2背景知识(编译器和编译语言的关系和编译语言的编译过程)

3.2.1编译器和编译语言的关系

编译语言的历史:
在这里插入图片描述
在这里插入图片描述

3.2.2 编译语言生成程序的过程

在这里插入图片描述

3.3 gcc的生成过程

在这里插入图片描述

3.3.1预处理解释条件编译

在这里插入图片描述
应用:
vs的社区版本;专业版本;
这里云服务器内只会维护一份这两者中的一份;

3.3.2链接

链接会将.o文件和库函数相结合;

3.3.2.1库:

在这里插入图片描述

3.3.2.2库的分类:
3.3.2.2.1 静态库

静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”

3.3.2.2.2动态库

动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,
而是在程序执行时运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态
库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc hello.o –o hello

总结: 开发环境进行开发的全过程:
1准备:
(1)下载头文件,和库文件
(2)设置好头文件查找库文件的路经
(3)规定好库文件和**.o文件**的 链接方式已备编译时的链接使用
2.编译
预处理
编译
汇编
链接

四.代码自动生成程序(make和Makefile)

4.1解释

make是一个插件

使用它会直接将Makefile中的指令直接生成

Makefile是一个解释器(即一个文件)

他承载所需要的生成的命令

4.2示例

使用方法
推荐
在这里插入图片描述
不推荐
在这里插入图片描述
这里要讲的是.o文件依赖。s文件就会向下先生成.s文件;make一次可以生成多个文件;

4.3make

make 插件:
1.make的默认规则
1.默认第一条命令可以直接使用make来使用;后面的的指令需要make加目标文件;
2.Makefile代码中:使用@可以使代码不会回显;
在这里插入图片描述
在这里插入图片描述
这里使用echo就不会回显了;
3.Makefile中使用单#就可以将文件注释;
在这里插入图片描述
4.makefile 支持使用变量来进行编码:
在这里插入图片描述
5.makefile 支持依赖关系可以使用简称;
在这里插入图片描述
这里的 代 指 c o o d e . c ; ^代指coode.c; coode.c@代指mybin

5.Makefile中命令不被phony修饰的文件只可以在修改完成后使用一次;而被phony修饰的命令可以被重复使用;
在这里插入图片描述
这里的文件没有被修改所以不可以使用make
问题
make怎么知道文件没有被修改呢?
使用的是文件修改时间;
在这里插入图片描述2.文件时间ACM:
access时间:能访问时间;
Modify时间:文件内容修改时间;
Change时间:属性的修改时间;
这里access时间:隔一段时间再进行一次更新;并不是每次都更新;
原因
在这里插入图片描述
由1.2和2得我们可以得到:make判段是否更改的使用的时间 :Modify时间;

5.1缓冲区

在这里插入图片描述
这里输出会等待两秒后输出;
**出现这种情况的原因:缓冲区(输入缓冲区,输出缓冲区)今天主要是输出缓冲区;
那么缓冲区在哪里呢?
在这里插入图片描述
标准输出流;
** 一般输出回 将文件先放在输出中;等待一段时间;再输出;

但是\n可以强制输出;
fflush(stdout);强制输出;

5.2回车

是将光标回到本行首元素
使用\r
这里注意:输出没有使用换行;需要使用fflush(stdout)来强刷新缓冲区;

5.3 换行

将光标换到下一行;

回车 加换行

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

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

相关文章

Cookie的详解使用(创建,获取,销毁)

文章目录 Cookie的详解使用(创建,获取,销毁)1、Cookie是什么2、cookie的常用方法3、cookie的构造和获取代码演示SetCookieServlet.javaGetCookieServlet.javaweb.xml运行结果如下 4、Cookie的销毁DestoryCookieServletweb.xml运行…

docker学习(十九、network使用示例bridge)

文章目录 一、容器网络分配情况1.启动容器2.查看容器的network3.容器网络分配 二、bridge1.bridge详细介绍2.实践bridge两两匹配3.创建network,默认bridge network相关内容: docker学习(十八、network介绍) docker学习&#xff08…

浅学Vue3

安装 vue项目 npm init vuelatest 回车装包 npm install 路由 安装 Router npm install vue-router4 -S项目根目录新建 router --> index.js vue2中 index.jsimport Vue from vue; import VueRouter from vue-router; import Home from ../views/Home.vue;Vue.use(V…

Linux操作系统极速入门[常用指令](安装jdk,MySQL,nginx),以及在linux对项目进行部署。

linux概述: Linux是一套免费使用和自由传播的操作系统 我们为什么要学,Linux? 主流操作系统: linux系统版本: 内核版: 由linux核心团队开发,维护 免费,开源 负责控制硬件 发行版&…

Vulnhub-Al-Web-1.0 靶机复现完整过程

一、信息收集 1.主机发现 arp-scan -l2.端口扫描 nmap -sV -p- 192.168.200.16PORTSTATESERVICEVERSIONMAC Address80/TCPOpenhttpApache httpd00:0C:29:C4:1B:78 (VMware) 3.目录扫描 python dirsearch.py -u http://192.168.200.16扫描出来这两个文件,首先先…

关于SQL时间盲注(基于sleep函数)的手动测试、burpsuite爆破、sqlmap全自动化注入

SQL时间注入是一种常见的SQL注入攻击方式,攻击者通过在SQL语句中注入时间相关的代码,来获取敏感信息或者执行非法操作。其基本原理如下: 攻击者向Web应用程序中输入一段恶意代码,通过SQL语句查询数据库,并注入时间相关…

【论文阅读】Resource Allocation for Text Semantic Communications

这是一篇关于语义通信中资源分配的论文。全文共5页,篇幅较短。 目录在这里 摘要关键字引言语义通信资源分配贡献公式符号 系统模型DeepSC TransmitterTransmission ModelDeepSC Receiver 语义感知资源分配策略Semantic Spectral Efficiency (S-SE&#…

ClickHouse基础知识(二):ClickHouse 安装教程

1. 准备工作 1.1 确定防火墙处于关闭状态 1.2 CentOS 取消打开文件数限制 (1)在 hadoop101 的 /etc/security/limits.conf 文件的末尾加入以下内容 sudo vim /etc/security/limits.conf(2)在 hadoop101 的/etc/security/limits.…

主编夜话,2023 技术圈儿大事件盘点丨 RTE 开发者日报 Vol.115

开发者朋友们大家好: 这里是「 RTE 开发者日报 」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

netty trojan

参考代码:https://github.com/kdyzm/trojan-client-netty 参考博客: github代码作者的博客:https://blog.kdyzm.cn/post/71 trojan-go介绍:https://p4gefau1t.github.io/trojan-go/developer/trojan/ trojan协议介绍:h…

Python 进阶(十八):配置文件(configparser 模块)

大家好,我是水滴~~ configparser模块是Python标准库中的一个模块,用于解析配置文件。它提供了一种简单而灵活的方式来读取、修改和写入INI格式的配置文件。本文将介绍该模块是如何操作配置文件的。 文章中包含大量的示例代码,希望能够帮助新…

Google Ad帐号被封?这几个关键点看好

海外广告投放工作中,账号是非常重要的环节。与在Facebook上运行广告相比,运行Google Ads在代理选择方面通常没有那么严格,因为 Google 对 IP 使用并不那么严格。但是,这并不意味着您可以不加考虑地使用任何代理IP。在本文中&#…

vue3-富文本编辑器(vue-quill)

官网&#xff1a;VueQuill | Rich Text Editor Component for Vue 3 安装 pnpm add vueup/vue-quilllatest 使用 局部使用 先导包 import { QuillEditor } from vueup/vue-quill import vueup/vue-quill/dist/vue-quill.snow.css; 再使用 <QuillEditor theme"snow…

Arduino中手写脉冲控制步进电机-2

目录 1、前言 2、时间-位移关系计算 3、Matlab计算时间和位置数据 (1)Matlab程序 &#xff08;2&#xff09;Arduino程序 4、Matlab生成Arduino电机正反转程序语句 &#xff08;1&#xff09;Arduino程序 &#xff08;2&#xff09;Matlab 命令行方式生成Arduino步进电…

21.仿简道云公式函数实战-数学函数-COS

1. COS函数 COS 函数可用于计算角度的余弦值&#xff0c;返回 -1 到 1 之间的数值。 2. 函数用法 COS(弧度) 3. 函数示例 如计算 COS(60) 的值&#xff0c;可设置公式为COS(RADIANS(60))&#xff0c;返回 0.5。 4. 代码实战 首先我们在function包下创建math包&#xff0…

【C++】开源:cpp-httplib HTTP协议库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍cpp-httplib HTTP协议库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&a…

Python入门学习篇(十一)——函数注释函数嵌套全局变量与局部变量

1 函数注释 1.1 使用说明 第一步 在函数体里面输入三个""" 第二步 回车1.2 示例代码 def quotient(divisor,dividend):""":param divisor: 除数:param dividend: 被除数:return: 商"""return divisor/dividendnum1int(input(&…

10. Opencv检测并截取图中二维码

1. 说明 在二维码扫描功能开发中,使用相机扫描图片时,往往图片中的信息比较多样,可能会造成二维码检测失败的问题。一种提高检测精度的方式就是把二维码在图片中单独抠出来,去除其它冗余信息,然后再去识别这张提取出来的二维码。本篇博客记录采用的一种实现二维码位置检测…

律师卷宗档案保存期限多久?律师档案卷宗如何整理?

律师卷宗档案的保存期限可以根据不同法律和法规进行调整&#xff0c;因此可能会有所不同。一般来说&#xff0c;律师卷宗档案的保存期限通常为10年以上。然而&#xff0c;具体的保存期限还会受到当地司法体系和律师协会规定的影响。建议您咨询所在地的律师协会或相关法律机构&a…

AGV智能搬运机器人-替代人工工位让物流行业降本增效

在当今快速发展的世界中&#xff0c;物流业面临着巨大的挑战&#xff0c;包括提高效率、降低成本和优化工作流程。为了应对这些挑战&#xff0c;一种新型的自动化设备——智能搬运机器人正在崭露头角。本文将通过一个具体的案例来展示富唯智能转运机器人在实际应用中的价值。 案…
最新文章