2024年最全【Linux】环境基础开发工具使用(万字汇总)(3),2024年最新阿里一线架构师技术图谱

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

🐳1. Linux 软件包管理器 yum

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

这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.
安装完毕之后可以通过拖拽的方式将文件上传过去.

注意事项:

关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!
可以通过 ping 指令验证

ping www.baidu.com

请添加图片描述

  • 查看软件包

**通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. **

例如:

yum list | grep lrzsz

结果如下:

请添加图片描述

注意事项:

  • 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  • “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
  • “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
  • 最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.
  • 如何安装软件

通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装.

sudo yum install lrzsz

yum 会自动找到都有哪些软件包需要下载, 这时候敲 "y" 确认安装.
出现 "complete" 字样, 说明安装完成.

注意事项:

  • 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
  • yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
  • 如果 yum 报错, 请自行百度.
  • 如何卸载软件

仍然是一条命令:

sudo yum remove lrzsz

  • 好玩的命令

行驶的小火车: 下载:yum install -y sl 执行:sl

在这里插入图片描述

说话的牛:下载:yum install -y cowsay 执行:cowsay hello

在这里插入图片描述


🐳2. Linux开发工具

  • 在以前,别人问你,你在什么环境下写代码 ?你在什么环境下调试代码?你在什么环境下编译、链接代码?你会怎么回答呢?
  • vs code 2020
  • 对于上面这种环境,我们称之为集成开发环境。相比我们在 Linux 中大部分情况下我们所使用的工具都是独立的工具 —— 比如我们写代码用 vim、编译用 gcc/g++、调试用 gdb、维护项目关系用 make/Makefile 等

在这里插入图片描述


🐳3. Linux编辑器-vim使用

🐬3.1 vim的基本概念

vim是一个文本编辑器,和记事本没有区别,只负责写代码

🐬3.2 vim的安装

  • 已安装

Linux通常都已经默认安装好了 vi 或 Vim 文本编辑器,我们只需要通过vim命令就可以直接打开vim编辑器了

请添加图片描述

  • 未安装

有些精简版的Linux操作系统,默认并没有安装vim编辑器。当我们在终端中输入vim命令时,系统会提示"command not found"。

解决办法:

有网的前提下,可以使用yum工具对vim编辑器进行安装

# 安装vim且询问是否时自动选择yes
# yum install vim -y


🐬3.3 vim的三种常用模式

vim是一款多模式的编辑器,有三种常见模式:命令模式、插入模式,底行模式。

请添加图片描述

  • 命令模式:

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode,可以通过快捷键对文件内容进行复制、粘贴、删除等操作

  • 插入模式

在命令模式下输入小写字母a或小写字母i即可进入编辑模式,只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

  • 底行模式

在命令模式下输入冒号shift + :即可进入末行模式,可以在末行输入命令来对文件进行查找、替换、保存、退出等操作


🐬3.4 vim的基本操作

  • 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
  • $ vim test.c
  • 不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。
  • 命令模式 -> 插入模式(输入 a / i / 0)
  • 插入模式 -> 命令模式(ESC)
  • 命令模式 -> 底行模式(shift + :
  • 底行模式 -> 命令模式(ESC)
  • 退出vim及保存文件,在[命令模式]下,按一下「:」冒号键进入「Last line mode」:
  • :w (保存当前文件)
  • :wq (存盘并退出 vim)
  • : q! (不存盘强制退出 vim)

🐬3.5 vim正常模式命令集

  • 进入插入模式/底行模式
  • 按【i】切换进入插入模式后,是从光标当前位置开始输入文字
  • 按【a】进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字
  • 按【o】进入插入模式后,是插入新的一行,从行首开始输入文字
  • 按【:】进入底行模式
  • 移动光标

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

命令效果
按「G」移动到文章的最后
按「$ 」移动到光标所在行的“行尾”
按「^」移动到光标所在行的“行首”
按「w」光标跳到下个字的开头
按「e」光标跳到下个字的字尾
按「b」光标回到上个字的开头
按「#l」光标移到该行的第#个位置,如:5l,56l
按[gg]进入到文本开始
按[shift+g]进入文本末端
按「ctrl」+「b」屏幕往“后”移动一页
按「ctrl」+「f」屏幕往“前”移动一页
按「ctrl」+「u」屏幕往“后”移动半页
按「ctrl」+「d」屏幕往“前”移动半页
  • 删除文字
命令效果
「x」每按一次,删除光标所在位置的一个字符
「#x」例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「X」大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」删除光标所在行
「#dd」从光标所在行开始删除#行
  • 复制
命令效果
「yw」将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」复制#个字到缓冲区
「yy」复制光标所在行到缓冲区。
「#yy」例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • 替换
命令效果
「r」替换光标所在处的字符。
「R」替换光标所到之处的字符,直到按下「ESC」键为止。
  • 撤销上一次操作
命令效果
「u」如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
「ctrl + r」撤销的恢复
  • 更改
命令效果
「cw」更改光标所在处的字到字尾处
「c#w」例如,「c3w」表示更改3个字
  • 跳至指定行
命令效果
「ctrl」+「g」列出光标所在行的行号。
「#G」例如,「15G」,表示移动光标至文章的第15行行首。

🐬3.6 vim底行模式命令集

  • 列出行号

「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。

  • 跳到文件中的某一行

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行

  • 查找字符
命令效果
「/关键字」先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」

问题:/ 和 ?查找有和区别?操作实验一下

/ 是从文本的开头开始往下查找,? 是从文本结尾开始往上查找。

  • 保存文件

「w」: 在冒号输入字母「w」就可以将文件保存起来

  • 离开vim
  • 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
  • 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

🐬3.7 配置vim

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

🐬3.8 sudo提升权限问题

  • 曾经我们在普通用户的操作中,想使用 sudo 来短期提升权限,却并不能如愿,这是因为默认这个用户是不受信任的

解决办法:

  • 切换成root
  • 输入指令:vim /etc/sudoers
  • 对应位置
  • 帮上面那行指令复制,把ALL改成自己的用户名

在这里插入图片描述


🐳4. Linux编辑器-gcc/g++使用

  • 背景知识
    我们的 C 代码写完,要变成可执行程序需要四个阶段:
  1. 预处理(进行宏替换)
  2. 编译(生成汇编)
  3. 汇编(生成机器可识别代码)
  4. 连接(生成可执行文件或库文件)

🐬4.1 gcc如何使用

格式 :gcc [选项] 要编译的文件 [选项] [目标文件]

# 例如: 执行程序-> gcc code.c -o code

请添加图片描述

🐬4.2 预处理(进行宏替换等)

  • 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
  • 预处理指令是以#号开头的代码行。

实例: gcc –E code.c –o code.i

  • 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程
  • 选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序

code.c

在这里插入图片描述

code.i

在这里插入图片描述

预处理之后还是C语言


🐬4.3 编译(生成汇编)

  • 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。
  • 用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码

实例: gcc –S code.i –o code.s

在这里插入图片描述

code.s
在这里插入图片描述

这是汇编语言,虽然我们没有学过但也需要大概知道是什么


🐬4.4 汇编(生成机器可识别代码)

  • 汇编阶段是把编译阶段生成的“.s”文件转成目标文件
  • 读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了

实例: gcc –c code.s –o code.o

code.o
请添加图片描述


🐬4.5 连接(生成可执行文件或库文件)

  • 在成功编译之后,就进入了链接阶段。

实例: gcc code.o –o code

请添加图片描述


🐬4.6 gcc选项汇总

  • E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
  • S 编译到汇编语言不进行汇编和链接
  • c 编译到目标代码
  • o 文件输出到 文件
  • static 此选项对生成的文件采用静态链接
  • g 生成调试信息。GNU 调试器可利用该信息 。
  • shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
  • O0
  • O1
  • O2
  • O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
  • w 不生成任何警告信息。
  • Wall 生成所有警告信息。

为了方便记忆,我们可以看看键盘的左上角的 Esc 键,它刚好对应我们的 -E、-S、-c 选项;而生成的文件的后缀刚好对应镜象文件的后缀 .iso


🐬4.7 动态库和静态库

  • 在这里涉及到一个重要的概念:函数库

我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?


最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用

  • 静态库和动态库
  • 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”
  • 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态库。
  • gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。
    gcc code.o –o code
  • gcc默认生成的二进制程序,是动态链接的,这点可以通过file 命令验证。
  • file code file 辨别code 的类型

请添加图片描述

  • ldd code ldd 命令查看 mytest 所依赖的库

请添加图片描述

若要采用静态链接,需要带选项

gcc code.c -o code_static -static

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值