文章目录

  • 前言
  • 一、Linux编辑器 ---vi/vim
    • 1. vi/vim介绍
    • 2. vi/vim 各种模式间的相互切换
    • 3.一般模式
    • 4.编辑模式
    • 4.命令行模式
  • 二、Linux软件包管理器 --- yum/RPM
    • 1.yum介绍
    • 2.YUM本地源:系统安装光盘
    • 3.YUM的使用操作
    • 4.配置阿里yum源
    • 5.RPM介绍
    • 5.1RPM包的名称格式
    • 5.2 RPM指令
  • 三、编译器 --- gcc/g++
  • 四、调试器 --- gdb
  • 五、Linux项目管理器 --- make/makefile
  • 总结

前言


一、Linux编辑器 —vi/vim

1. vi/vim介绍

vi 是 Linux 系统内置的文本编辑器,具有程序编程的能力,vim 可以看作是 vi 的增强版,可以字体颜色来辨别语法是否正确,便于程序的设计,而且具有代码补全、编译、错误跳转等开发功能。

vi 和 vim 有三种常用模式:

正常模式;默认为此模式,使用 vim 打开一个档案时直接就是正常模式,在该模式中可以使用方向键来移动光标,可以使用删除键处理档案内容,也可以复制、粘贴档案内容。
插入模式;可以编辑具体内容的模式,在正常模式中按下 i 、o、 O 、a A、 R 等字母(一般按 i 即可)后会进入该编辑模式。
在命令行模式输入冒号切换到末行模式,再按ESC又返回到命令行模式。编辑模式和末行模式之间不能直接切换,只能通过命令行模式切换;

2. vi/vim 各种模式间的相互切换

3.一般模式

命令 说明
x / X x是删除下一个字符,X是删除上一个字符 如果想删除6个字符,那就" 6x "
yy 复制光标所在行如果想要复制20行,那就 " 20yy "
p/P p是粘贴到下一行,P是粘贴到上一行
dd 剪切(删除)光标所在行如果想要删除16行,那就 " 16dd "
u 撤销
Ctrl+l 反撤销
.(小数点) 重复上一个动作
gg/G gg是回到第一行,G是回到最后一行,如果想要回到第16行,那就 " 16G "
y1G/yG y1G是复制当前行前面的所有数据,yG是复制当前行之后的全部数据
d1G/dG d1G是删除当前行前面的所有数据,dG是删除当前行之后的全部数据
v/V/Ctrl+v v是光标起始和结束之间的文本会被选中,V是光标起始和结束之间的所有行被选中,Ctrl+v是光标起始和结束之间构成的矩形区域被选中
shfit+zz 保存退出
shfit+zq 不保存退出

4.编辑模式

选项 作用
I、i i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
A、a a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
O、o 这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用)
R、r r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)

4.命令行模式

:命令 说明
:w 保存
:q 退出
:wq 保存并退出
:q! 不保存退出
:set nu 设置行号
:set nonu 取消行号
: /关键字 搜索文件(从文件开头往下找)
: ?关键字 搜索文件(从文件末尾往往上找)
: s/被替换的字符/替换后的字符/g 全局替换文本

二、Linux软件包管理器 — yum/RPM

1.yum介绍

Yum(全称为Yellow dog Updater,Modified)是一个在Fedora和RedHat以及CentOS中的shell前端软件管理器,基于RPM包管理,能够从指定服务器自动下载RPM包并且安装可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装;

2.YUM本地源:系统安装光盘

目的:通知Linux服务器,通过本机的系统光盘获得软件包,并安装软件

默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络 YUM 源为国内镜像的网站,比如网易 163,aliyun 等。
2.1安装 wget, wget 用来从指定的 URL 下载文件

yum install wget

2.2YUM核心配置目录

YUM核心配置目录:/etc/yum.repos.d/

2.3备份移除官方YUM库

#rm -rf /etc/yum.repos.d/* 或
#mv /etc/yum.repos.d/* /tmp

2.4编写本地YUM库配置文件

#vim /etc/yum.repos.d/dvd.repo
// /etc/yum.repos.d/是YUM下载地址目录
[dvd]
//[dev]某一个库的名称,中括号[]是必须的
name=dvd
//name=dvd是库的说明,name是必须的
baseurl=file:///mnt/
// baseurl=file:///mnt/cdrom下载库的具体地址(重要)
gpgcheck=0
//gpgcheck=0是关闭校验

2.5挂载安装光盘

#mkdir /mnt/cdrom
#vim /root/.bashrc
//自启动文件,跟随用户启动程序运行的程序
//作用:可以避免每次重启需重新挂载
#mount /dev/cdrom /mnt/cdrom
//mount挂载
// /dev/cdrom是光驱文件
///mnt/cdrom是挂载点
//重启后,使用ls /mnt/cdrom,查看到光盘信息即可

2.6使用YUM安装和卸载程序

#yum install -y http
// 安装软件
#systemctl start http
// 启动软件
#systemctl stop firewalld
关闭防火墙
#systemctl disable firewalld
禁用防火墙开机自启

2.7模拟客户机访问

打开浏览器,输入网站服务的ip地址。http://127.0.0.1,验证网站程序部署成功

3.YUM的使用操作

3.1yum指令
语法:
yum -[选项] [参数] //yum选项-y:是对所有提问回答yes
参数说明:

参数 作用
install 安装rpm软件包
update 更新rpm软件包
check-update 检查有没有可以用的更新rpm软件安装包
remove 删除指定的rpm软件包
list 显示软件包信息
clean 清理yum过期的缓存
deplist 显示yum软件包的所有依赖关系
3.2安装

全新安装:
#yum -y install httpd vsftpd
// yum主命令 -y (yes)自动确认 install 安装 http 软件包1 vsftpd 软件包2 软件包N

重新安装:
当软件缺失文件,可尝试重新安装
#yum -y reinstall httpd
// reinstall 重新安装

更新安装
#yum -y update httpd
// 升级一个程序httpd
#yum -y update
// 更新系统

3.3查询

#yum list | grep mysql-community-libs
// 查询是否有mysql-community-libs,其中 带@是已经安装的

3.4卸载

卸载程序:
#yum -y remove httpd
// remove移除,卸载软件包

4.配置阿里yum源

进入阿里镜像站官网 地址:https://developer.aliyun.com/mirror/

4.1 备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下拉如下图

4.2 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
复制到Linux终端进行下载

[root@zabbix_server ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
--2022-10-28 23:47:39--  https://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 39.175.99.219, 39.175.99.220, 39.175.99.224, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|39.175.99.219|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/CentOS-Base.repo”100%[==============>] 2,523       --.-K/s 用时 0.002s  2022-10-28 23:47:39 (1.10 MB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])

4.3 运行 yum makecache 生成缓存

[root@zabbix_server ~]# yum makecache
[root@zabbix_server ~]# cd /etc/yum.repos.d
[root@zabbix_server yum.repos.d]# ls
CentOS-Base.repo  CentOS-Base.repo.bak  epel.repo  epel-testing.repo  vscode.repo  zabbix.repo
[root@zabbix_server yum.repos.d]# vim CentOS-Base.repo#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
"CentOS-Base.repo" 62L, 2523C

5.RPM介绍

RPM Packge Manager(原red Hat Package,现在是一个递归缩写),由Red Hat公司提出,被众多Linux发行版所采用,也称二进制(binary code)无序编译,可以直接使用,无法设定个人设置,开关功能。

软件包示列(注意后缀):mysql-community-community-common-5.7.12-el7.x86_64.rpm

5.1RPM包的名称格式

RPM包:Apache - 3.0-11. el7. x86_64. rpm
// Apache软件包名、3.0-11版本号(version)、enterprise linux 7(el7)发布版本(Release5/6/7)、
x86_64系统平台(32/64)、.rpm文件后缀

5.2 RPM指令

语法:rpm -[选项] [参数]

选项 作用
-qa 查询安装的全部rpm软件包
-e 卸载rpm软件包
-e --nodeeps 卸载软件时,不检查依赖
-ivh 用进度条显示安装时的详细信息
-v 显示详细信息
-h 进度条

5.2.1 安装

#cd /mnt/cdrom/Packages
//检查包是否存在
#ls wget-1.14-18.el7_6.1.x86_64.rpm
//下载wget-1.14-18.el7_6.1.x86_64.rpm包
#wget-1.14-18.el7_6.1.x86_64.rpm
//安装
#rpm -ivh wget-1.14-15.el7.x86_64.rpm
-i(安装)、 -v(可视)、 -h(百分比)
5.2.2 查询
#rpm -q wget wget-1.14-15.el7.x86_64
//看到软件包的名字,就说明rpm -q查询成功,已经安装软件

5.2.3 卸载
卸载软件包
#rpm -evh wget-1.14-15.el7.x86_64
再次查询,发现已经卸载
#rpm -q wget-1.14-15.el7.x86_64
//未安装软件包 wget-1.14-15.el7.x86_64

三、编译器 — gcc/g++

vim编辑器编写代码后,c程序使用gcc编译器,c++程序使用g++编译器。
基本使用方法:
$ gcc [选项] 编译文件 [选项] 目标文件
$ g++ [选项] 编译文件 [选项] 目标文件

先用vim 写好文件
#vim example.c

#gcc example.c
默认生产的可执行文件为a.out,要想生成指定文件名可用-o+文件名。
#gcc xxx.c -o xxx

gcc命令选项:

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

在学习gcc编译器之前,先回顾一下c程序编译链接的过程:

预处理(进行宏替换)
编译(生成汇编)
汇编(汇编转为机器码)
链接(生成可执行文件或库文件)

gcc编译.c文件时,可以通过不同选项实现查看各个过程的编译结果。

预处理过程

预处理的功能主要包括宏定义,文件包含,条件编译,删除注释等。预处理指令主要指以#开头的语句。

$ gcc -E test.c -o test.i      # 完成预处理后停止

选项-E让翻译在预处理结束后停下来,-o可以指定生成的目标文件名,预处理完的文件一般后缀为.i

编译过程

编译时,gcc 会检查代码的规范性、是否有语法错误,已确定代码所做的工作,检查无误后 gcc 会生成汇编代码。

$ gcc -S test.i -o test.s     # 完成编译后停止

vim test.a 查看内容发现,在这个阶段首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,把代码翻译成汇编语言

汇编过程
汇编阶段将编译所形成的汇编代码生成目标文件,也就是二进制文件。

$ gcc -c test.s -o test.o     # 完成汇编后停止

vim test.o查看内容发现,程序已经从汇编指令转为机器码

链接过程

$ gcc test.o -o test        # 完成链接

链接过程主要是将自己写的程序与函数或第三方库关联起来,生成可执行程序。

通常写程序时,就include了语言本身所提供的链接库文件,至于链接库文件到底是什么,接下来会讲解。

当然编译 C/C++ 程序,不需要上述这么复杂,直接执行即可:

$ gcc test.c -o test
$ gcc -o test test.c 

静态链接和动态链接

函数库的概念
语言本身会提供的库,库可以看成一套头文件和一套库文件。比如通常使用的printf,scanf等等库函数,都是实现在库文件中的,可以通过引用对应的头文件,来使用这些代码
这里函数库分为静态库和动态库两种。

1.静态库是指编译链接的时候,将所有库文件的代码全部添加到可执行代码中,在运行时不需要库文件,但是静态库文件较大,其后缀为.a
2.动态库是在程序执行时由运行时链接文件加载库,节省系统的开销,动态库文件较小,其后缀为.so

gcc 默认生成的可执行文件是动态链接的,可以通过file命令查看验证。当然要想可执行文件是静态链接,可以通过-static命令。

tips:有些服务器没有安装C语言的静态库,运行gcc -static test.c -o test_static会出现can not found -lc的错误,这里只需要运行sudo yum install glibc-static,安装静态库即可。

静态链接的优缺点
静态链接的缺点:

1.浪费空间,链接时会将库中的内容放入目标文件中,所以文件的体积较大。如果有多个程序文件,那么每个程序中都会加入库文件的内容,包含相同的公共代码,造成浪费。

2.更新较为麻烦,每当库函数的代码修改了,此时就需要重新进行重新打包成lib文件,再去编译链接形成可执行程序。

静态链接的优点:

在可执行程序中已经具备了所有执行程序所需要的任何东西,不需要到其他文件中查找内容,在执行的时候运行速度快

动态链接
动态链接出现就是为了解决静态链接中的两个问题:空间浪费和更新困难。 动态链接把程序按照模块拆分成各个相对独立部分,并把链接这个过程推迟到了运行时再进行,由操作系统的装载程序加载库,将它们链接在一起形成一个完整的程序。
动态链接的优点:

1.避免空间浪费,即使多个程序依赖于同一个库,但该库不会像静态链接那样在内存中存在多份副本,而是这多个程序执行时共享副本。

2.维护比较方便,更新时只需要替换原来的目标文件,程序再次运行时,新的目标文件会自动加载到内存并链接起来。库文件与可执行文件独立,更新库文件不会对程序文件造成影响,提高了可维护性和可扩展性。

动态链接的缺点:

因为把链接推迟到了程序运行时,所以每次执行程序都需要进行链接,所以性能会有一定损失,运行速度相对慢一点

四、调试器 — gdb

当使用gcc编译程序时,出现错误,又想和vs一样进行程序调试,怎么办呢?
在Linux下也有支持程序调试的调试器:gdb
程序的发布方式有两种模式:Debug 和 Release 模式。Linux 下 gcc/g++ 编译出的可执行程序,默认是 Release 模式。要使用 gdb 调试,必须在代码编译的时候加上调试信息。
用gdb调试的指令为:#gcc 文件名

$ gcc test.c -o test_debug -g # 加上调试信息
$ gdb test_debug              # 进入gdb调试
(gdb) quit                    # 退出gdb

此时文件必须带有调试信息,使用-g指令让可执行程序带有调试信息。

常用的调试命令:

命令 功能
list/l 显示源代码
r/run 运行程序
n/next 单条运行
s/step 进入函数调用
break/b 行号 在某一行设置断点
undisplay n 取消跟踪查看序号为n的变量
display 变量名 跟踪查看变量的值
delete breakpoints n 删除序号为n的断点
info b 查看断点信息
finish 执行完当前函数
continue 执行到下一断点
p 变量名 打印变量值

使用ctrl+d或quit退出

五、Linux项目管理器 — make/makefile

实现一个项目通常会有很多文件,Linux通过Makefile来管理这些文件的运行先后等复杂操作。
make是一个指令,Makefile是一个文件,两者搭配使用,实现项目自动化构建。
Makefile文件的书写格式为:

目标文件:依赖文件
gcc [选项] 依赖文件 -o 目标文件
以example.c为例,若想把预处理、编译、汇编和链接过程的文件都生成,Makefile的书写为:

make命令运行结果:

要想删除make运行得到的可执行文件,则只需要在Makefile文件中加入:

tips.PHONY是一个修饰符号,让其后面的命令总是可执行

然后执行make clean即可。
#make clean


总结

以上就是今天要讲的内容,本文仅仅简单介绍了Linux常用工具的使用,从而便利我们的工作与学习。

【Linux入门指北】第六篇 Linux常用的开发工具相关推荐

  1. 【Linux入门指北】第一篇 初识Linux

    目录 前言 一.Linux操作系统的发展历史 1.Linux操作系统的诞生 2.Linux操作系统的发展 1.自由软件基金会(FSF) 2.GPL协议 3.GUN工程 二.Linux的不同发行版本 1 ...

  2. 【Linux入门指北】linux基本命令的使用 实验篇

    linux基本命令的使用 文章目录 linux基本命令的使用 一.实验目的 二.实验内容 三.实验器材 四.实验步骤及结果 总结 一.实验目的 1.熟悉linux操作系统的shell环境. 2.掌握l ...

  3. 【Linux入门指北】文件权限的修改与验证 实验篇

    文件权限的修改与验证 文章目录 文件权限的修改与验证 一.实验目的 二.实验内容 三.实验器材 四.实验步骤及结果 总结 一.实验目的 1.掌握文件和文件夹的基本操作: 2.懂得查看和识别文件的权限: ...

  4. 【Linux入门指北】磁盘配额管理 实验篇

    磁盘配额管理 文章目录 磁盘配额管理 前言 一.实验目的 二.实验内容 三.实验器材 四.实验步骤及结果 总结 前言 一.实验目的 1.熟悉磁盘分区.格式化.挂载等操作的用法: 2.掌握磁盘配额的配置 ...

  5. 【Linux入门指北】Linux实验综合训练

    Linux实验综合训练 文章目录 Linux实验综合训练 前言 一.用户和组群管理(本大题共4小题,共10分) (1)创建两个用户banzhang,xuewei,并指定密码为123456,查看配置文件 ...

  6. 【Linux入门指北】 网站服务

    网站服务 文章目录 网站服务 一.简介 二.静态站点 三.动态站点 1.LAMP 2.部署论坛系统discuz 2.1 基础环境 2.2 安装LAMP 2.3 安装Discuz ! 3.部署博客系统 ...

  7. 【NGINX入门指北】 基础篇

    文章目录 一.Nginx 简介 1.什么是Nginx? 2.Nginx 的作用 二.Nginx的安装 1.Windows下安装Nginx 2.Linux下安装Nginx 1.源码编译安装 2.yum ...

  8. 【MySQL入门指北】第二篇 MySQL安装

    文章目录 一.安装MySQL前的准备工作 1.关闭防火墙和selinux 二.MySQL相关下载地址 三.安装步骤 1.下载软件包 2.安装相关依赖软件 3.安装MySQL服务器 4.启动MySQL服 ...

  9. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

  10. Flutter 入门指北(Part 9)之弹窗和提示(SnackBar、BottomSheet、Dialog)

    该文已授权公众号 「码个蛋」,转载请指明出处 前面的小节把常用的一些部件都介绍了,这节介绍下 Flutter 中的一些操作提示.Flutter 中的操作提示主要有这么几种 SnackBar.Botto ...

最新文章

  1. 拖拽公式图片、一键转换LaTex公式,这款开源公式识别神器比Mathpix Snip更适合你...
  2. 表达式计算 DataTable/DataRow/DataColumn Expression、JScript CodeDomProvider Eval
  3. 如果文件夹不存在,请创建它
  4. macOS下nginx配合obs做推流直播.md
  5. boost::units::information相关的测试程序
  6. 【数据结构】图的遍历(BFS和DFS)
  7. \Grokking Algorithms\简介与作者采访
  8. Linux 用C/C++创建新文件并写入内容
  9. 容器服务kubernetes弹性伸缩高级用法
  10. 2021年中国人力资源服务行业研究报告
  11. 使用php-fpm状态页观察当前的php-fpm状态
  12. android crash分析工具,Android Crash之Native Crash分析
  13. 如何在Linux上执行exe文件
  14. 定时任务Quartz配置
  15. 如何真正理解三极管饱和 放大的含义 (必收藏)
  16. 时间片轮转调度算法(Java)
  17. 新研博美反式环辛烯-三乙二醇-氨基,TCO-PEG3-Amine可用于在活化剂(如EDC或DCC)或活化酯(如NHS酯)存在下通过稳定的酰胺键衍生羧基
  18. 大衣哥在《火火的情怀》后,和孟文豪张成军推出《新时代的农民》
  19. 【DL】第 9 章:新兴的神经网络设计
  20. 英伟达 GPU显卡计算能力查询表

热门文章

  1. 计算机二级c语言必看,计算机二级C语言考试必看技巧
  2. 计算机网络第三弹——数据链路层
  3. CFA 2020 notes的PDF版本,热乎乎的百度网盘分享
  4. build lavas 失败_构建配置 - Lavas 教程
  5. 2021 年前端宝典【超三百篇】
  6. matlab读不出数据,xlsread为什么读不出数据
  7. matlab 有源高滤波器,基于MATLAB有源滤波器的研究设计.ppt
  8. 贯穿时域与频域的方法——傅立叶分析(直观理解+Matlab实现)
  9. 51单片机(八)—— 数码管电路介绍
  10. Pyside2 背景图片填充