##### 1.5.1rz/sz软件的安装和使用
sudo yum install -y lrzsz
rz
#将文件从Windows传到Linux上
sz 文件名
#将文件发送到Windows
##### 1.5.2yum源
yum内置了app下载链接,即yum源。
Base指的是官方yum源,epel指的是扩展yum源。
yum源存放在/etc/yum.repos.d这个目录下。
sudo yum install -y eple-release
#安装扩展yum源
### 二、vim编辑器
vim是一种多模式编辑器,常见的是三种模式。以下是三种模式及切换方式。在底行模式下,:!wq。!表示强制执行,w表示写入保存,q表示退出。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9b9d4908c973493baf621ba8ef6a7df6.png#pic_center)
**命令模式**:
使用n可以进行性n行操作;
光标定位:
gg:定位光标到文本起始行开始的位置;
G:定位光标到文本最后一行的开头位置;
ng:定位到n行开头;
$:光标定位到当前行结尾;(锚点)
^:光标定位到当前行开头;(锚点)
w:光标向右移动;
b:光标向左移动;
hjkl:分别对应光标向左下上右移动;
复制:
yy:复制光标所在行的内容;
nyy:复制光标开始n行的内容;
粘贴:
p:将拷贝内容粘贴到光标的下一行;
np:将n份拷贝内容粘贴到光标的下一行;
撤销:
u:撤销上次操作;
ctrl+r:反撤销;
剪切:
dd:剪切光标所在行内容;
ndd:剪切光标所在行开始n行的内容;
其他:
shift+~:快速大小写转换;
nr:将光标当前位置的往后n个字符替换;
nx:将光标当前位置的往后n个字符删除;
**批量化替换模式**:
使用R进入,按两下insert键;
**插入模式**:
使用i进入,或者I,或者按一下insert键;
**批量选择模式**:
使用ctrl+v进入;要注意使用hjkl进行移动,再次进入插入模式要使用I;
**多文件模式**:
使用vs 文件名进入;
使用ctrl+ww实现光标在不同文件的切换;
**底行模式**:
1.!wq:!表示强制执行,w表示写入保存,q表示退出;
2./+文本关键词:搜索功能,搜索文本关键词匹配的子串;
3.!+各种指令操作:在vim里执行各种指令;
4.set nu/nonu:显示行号/去掉行号;
### 三、编译工具gcc/g++
#### 3.1gcc的使用
g++与gcc类似,只是编译.cc/.cpp./cxx结尾的文件,gcc编译的是.c文件。
要注意的是,能够开发是因为安装了相关的头文件和库文件,头文件在/user/include/路径下存放着,库文件在/lib64下存放着;
对一份源代码编译可细分为四个阶段,分别是预处理、编译、汇编、链接;
预处理阶段:
gcc -E test.c -o test.i -g
#这个阶段主要进行了去注释、头文件展开、条件编译、宏替换;
#E表示执行到预处理阶段结束,o表示以此方式命名,D表示定义一个量,用来进行条件编译;生成的.i文件本质上是一个较为干净的源文件,g表示以debug的方式进行编译,会留下许多调试信息;
编译阶段:
gcc -S test.i -o test.s
#这个阶段主要进行了语法检查,符号汇总,生成了汇编文件;
#S表示执行到编译阶段结束
汇编阶段:
gcc -c test.s -o test.o
#这个阶段是将汇编文件转换成二进制文件,形成符号表(注意此时的符号表不一定是有效的)
#c表示执行到汇编阶段结束,.o文件是可重定位目标二进制文件
链接阶段:
gcc test.o -o test.exe
#这个阶段会将多个二进制文件进行连接形成可执行文件或者库文件,进行合并符号表(此时的符号表才是有效的)
#不加选项直接生成的就是可执行程序,Windows下要求可执行程序必须是以.exe后缀结尾的;
条件编译可以实现同时维护专业版和社区版的软件,具体使用不同的版本是使用条件编译就可以对代码进行切割;
#### 3.2、编译完成常用的一些指令
1.od
od 二进制文件名
#进行二进制文件的查看
2.ldd
ldd test.exe
#查看可执行程序的依赖情况
3.file
file 可执行程序
#显示链接方式
4.readelf
readelf 可执行程序
#查看可执行程序的二进制构成,可执行程序一般是elf格式的二进制文件;
5.stat
stat 文件名
#可以查看文件的属性
#### 3.3链接
Linux中.so是动态库,.a是静态库,Windows中.dll是动态库,.lib是静态库,库文件其实就是对.o文件进行打包。一般libname.so中name就是库文件的名字。
安装开发包的本质就是安装头文件和对应的库文件,头文件提供声明,库文件提供实现和定义;默认使用的是动态库的方式进行链接。
链接方式分为静态链接和动态链接;
对于动态链接,动态库又被称为共享库,不同的程序都可以访问,只存在一份即可,但是程序对动态库的依赖性较大。
对于静态库,是将库文件的内容拷贝到自己的可执行文件中,用哪些拷贝哪些,依赖性较弱,可以独立运行程序,但是会导致代码膨胀;
形成可执行程序时,默认使用的连接方式是动态链接,所以必须提供动态库,进行静态链接时需要加选项-static;
### 四、自动化构建工具make/makefile
make:一条指令,makefile:是一个当前目录下的文件,通过依赖关系和依赖方法,进行栈结构的推导来完成自动化构建;
![](https://img-blog.csdnimg.cn/img_convert/9a8cb5f8c0ec69e6499adead0da6e95b.png)
最全的Linux教程,Linux从入门到精通
======================
1. **linux从入门到精通(第2版)**
2. **Linux系统移植**
3. **Linux驱动开发入门与实战**
4. **LINUX 系统移植 第2版**
5. **Linux开源网络全栈详解 从DPDK到OpenFlow**
![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/59742364bb1338737fe2d315a9e2ec54.png)
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/9d4aefb6a92edea27b825e59aa1f2c54.png)
**本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**
> 需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论