2 Linux环境基础开发工具

2.1 Linux软件包管理器yum

2.1.1 软件安装的方式

1. 源码安装
大多数开源的软件都是源码的形式。拿过来自己编译,安装。
优点:源码安装兼容性好。  
缺点:过程繁琐还容易卡壳。

2. rpm安装
RPM(Red-Hat Package Manager)红帽的软件包管理器。一般rpm安装使用rpm包,rpm包和tar包、gzip等不同,这些是压缩包,而rpm包是源码和一些安装规则的集合。使用RPM方式来安装后会指定软件安装位置,并生成对应的配置文件、服务启动脚本文件等。
优点:简化安装方式,不需要联网!
缺点:指定rpm包去安装,没有解决依赖关系。

3. yum安装
是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。
优点:再次简化安装
缺点:需要联网,更准确的说法是需要有一个yum源。大型的公司都会有自己的yum源,或者是找到可访问的yum源,修改yum配置文件中的yum源地址,并使之生效,这样就可以用yum进行软件安装了。

2.1.2 查看软件包

这里主要介绍CentOS7下安装软件的方式。
通过yum list命令可以查看当前一共有哪些软件包,由于包的数量非常之多,使用grep命令筛选出我们所专注的包。例如:
yum list | grep lrzsz

2.1.3 安装软件

yum install lrzsz
注意

  • 安装软件时需要向系统目录中写入内容,需要使用sudo或者切换到root用户才可以。
  • 输入命令后,yum会自动找到有哪些软件包需要下载,询问时只要输入“y”即可自动安装。

2.1.4 卸载软件

yum remove lrzsz
注意

  • 卸载软件也要使用sudo或者切换到root用户

2.1.5 常用软件安装

yum install lrzsz用户XShell和Linux之间的文件传输工具
yum install gccC程序编译器
yum install g++C++程序编译器
yum install gdb程序调试工具
yum install glibc-static静态库

2.2 Linux文本编辑器Vim

Vim中总共有12种模式,6种基本模式,6种条件模式。常用的有三种模式:

  1. 插入模式:只有在插入模式下,才可以做文字输入。
  2. 普通模式:控制屏幕光标的移动,字符或行的删除和复制。
  3. 底行模式:文件保存或退出,进行字符串查找和行定位等。
  • 从普通模式切换到插入模式
    i:进入插入模式,并且从光标所在位置开始插入
    a:光标移动到下一个字符处开始插入
    o:在光标所在行下方添加新航,进行插入模式
    I:光标移动到行首,开始插入
    A:光标移动到行尾,开始插入
    O:在光标所在行上方添加新行,进入插入模式

  • 从插入模式切换到普通模式
    ESC

  • 从普通模式切换到底行模式
    冒号:
    :w 保存文件
    :q 退出
    :wq 保存并退出
    :q! 强制退出,不保存
    :!pwd 临时执行一条命令,回车返回

  • 普通模式下的常用操作

  1. 移动光标位置
    hjkl 分别对应上下左右移动光标
    0 光标移动到行首
    $ 光标移动到行尾
    w 光标向后移动一个单词(以特殊字符进行区分
    b 光标向前移动一个单词
    gg 光标移动到文档首行
    G 光标移动到文档尾行
    ctrl+f 向下翻页
    ctrl+b 向上翻页

  2. 拷贝
    yy 复制光标所在行
    nyy 从光标所在行开始向下复制n行数据

  3. 粘贴
    p 向光标所在行下方粘贴剪切板内容
    P 向光标所在行上方粘贴剪切板内容

  4. 剪切/删除
    dd 剪切/删除光标所在行
    ndd 从光标所在行开始向下剪切/删除n行数据
    dw 从光标所在位置开始剪切/删除一个单词
    D 从光标所在位置开始剪切/删除到行尾的数据
    x 剪切/删除光标所在位置的字符

  5. 其他
    u 撤销上一步操作
    ctrl+r 恢复操作
    gg=G 全文对齐
    :n 跳到第n行
    /字符串 字符串匹配,按n可以跳到下一个匹配字符串
    ?字符串 也是字符串匹配,按n可以跳到上一个匹配字符串
    :1,3s/select/epoll/g 将1-3行中的select替换成epoll 不指定行数就是全部替换

2.3 Linux编译器gcc/g++

一份代码文件要变成可执行程序要经历四个阶段:

  • 预处理
  • 编译
  • 汇编
  • 链接
  1. 预处理
  • 预处理完成的内容主要包括:红替换、头文件展开、条件编译、去注释、文件包含等
  • 实例:gcc -E hello.c -o hello.i
  • 选项“-E”的作用是让gcc只完成预处理就停止编译
  • 选项“-o”是指定要生成的目标文件,“.i”文件是经过预处理的C原始程序
  1. 编译
  • 在编译阶段,gcc首先要检查代码的规范性,是否有语法错误等,在检查无误后再将代码编译成汇编语言
  • 实例:gcc -S hello.i -o hello.s
  • 选项“-S”的作用是让gcc只完成编译即停止编译过程
  1. 汇编
  • 汇编阶段是把编译阶段生成的“.s”文件转换成目标文件
  • 实例:gcc -c hello.s -o hello.o
  • “-c”选项是将汇编代码转换成“.o”的二进制目标代码
  1. 链接
  • 链接阶段主要是将彼此有关的目标文件进行连接,使所有的目标文件成为一个能被操作系统执行的统一整体

  • 实例:gcc hello.o -o hello
    在这里涉及到另一个重要的概念:函数库
    函数库一般分为静态库和动态库两种

  • 函数库文件是指将很多的机器代码/代码文件合并到一起打包生成的文件。

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

  • 动态库则与之相反。在编译链接时并没有将库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。所以动态库又称为共享库,运行时库。动态库文件名一般为lib***.so,lib是前缀,.so是后缀。

  • gcc默认是使用动态链接,要使用静态链接是,在gcc选项中加上“-static”

  • 链接方式的对比
    动态链接:只是记录了一些关于动态库函数的位置符号信息(生成文件小)
    优点是节省资源,更新升级方便;缺点是对库的依赖程度比较高,运行时需要存在。
    静态链接:直接将静态库中的数据全部拷贝到可执行程序中(生成文件大)
    优点是对库的依赖程度比较小;缺点是相对于动态链接资源浪费比较高,更新升级比较繁琐。

2.4 Linux项目自动化构建工具make/Makefile

Makefile是一个不普通的文本文件,它可以辅助用户完成各种大型项目的编译,在其中可以记录各种编译规则,用make这个工具对Makefile中记录的规则,逐条解释执行(make只是解释规则,最终依然还是使用编译器来完成编译过程)。
Makefile命名规则:makefile/Makefile

#Makefile注释以#开头
#编写规则:
#    目标对象名称:依赖对象名称
#    tab[\t]为了生成目标对象所要执行的命令
#make程序解释Makefile文件中规则的流程:
#  1.先找目标对象
#    永远只生成第一个对象,第一个对象命令执行完毕就退出了
#  2.找到目标对象之后,跟依赖对象进行时间属性对比
#    判断程序是否是最新的,是否需要重新编译
#  3.执行为了生成目标对象所要执行的命令
#    这条命令,不一定非要生成目标对象
#  make可以直接在外部指定要执行生成的对象
#  make clean
#  伪对象:不管目标对象是不是最新的,都需要重新生成
#  声明伪对象:.PHONY
#.PHONY:main test
#定义all对象是因为make只找第一个对象生成,其他对象将不再执行,但又是想要生成多个多个对象,
#那么就需要定义第一个对象,它的依赖对象是我们想要生成的其它所有对象,make为了生成第一个对象,
#会间接的去生成这些依赖对象
# makefile中的预定义变量
# 预定义变量是用于执行命令中
# $@:指的是目标对象
# $^:指的是所有的依赖对象
# $<:指的是所有的依赖对象中的第一个依赖对象
# wildcard 关键字,用于获取文件名
# $()用于使用一个变量
src=$(wildcard ./*.c)
all:main test
#main:main.c child.c
#    gcc main.c child.c -o main
main:$(src)gcc $^ -o $@
test:main.c child.cgcc main.c child.c -o test
#将clean声明为伪对象,就是为了防止外部有跟clean同名的文件,导致出现因为文件最新而不重新执行命令的问题
.PHONY:clean
clean:rm main

2.5 Linux调试器gdb

  • 程序的发布方式有两种,debug模式和release模式
    gcc/g++编译出来的默认是release模式

  • 要使用gdb对程序进行调试,必须在编译的时候加上-g选项,在生成可执行程序的时候加入调试符号信息

  • 将程序符号信息加载进入gdb中
    gdb./main(直接加载并进入gdb调试)
    file./main(已经进入gdb中)

  • 逐步调试:
    start 开始逐步调试
    n 下一步(不会跟踪进入函数)
    s 下一步(会跟踪进入函数)
    untill n 直接运行到第n行停下
    run 从开始重新运行

  • 断点相关操作
    b file:line 打断点
    b main.c:20 给main.c文件的第二十行打断点
    b myswap 给myswap函数打断点
    watch i 监控i变量
    d 删除所有断点
    d b n 删除序号为n的断点
    info breakpoint/i b 查看断点信息

  • 查看变量
    p 打印变量内容(&查看变量地址;*查看指针接引用内容)

  • 查看函数调用栈
    bt 快速定位程序崩溃位置

  • 其他
    l 查看运行代码的上下五行代码
    l n 查看第n行代码的上下五行代码
    c 继续运行

2.6 Linux命令行使用项目版本控制工具git

安装git
yum install git
创建项目
在github网页上创建好项目,将项目链接复制好以备下载
下载项目
git clone url在Linux中创建好一个放置代码的目录
url即是刚刚复制的项目链接
git三板斧

  1. git add
    将代码放到刚刚创建好的目录
    git add 文件名
    将需要用git管理的文件告知git

  2. git commit
    提交改动到本地
    git commit 目录

  3. git push
    同步到远程服务器上
    git push
    需要填入用户名和密码

git与svn的区别

  1. git是分布式版本控制系统,svn是集中式版本控制系统。
  2. git为用户建立了一个本地仓库,绝大多数操作都只需要访问本地文件和资源,不必联网就可以看到所有的历史版本记录,而svn却需要联网。
  3. git克隆一个完整项目的速度要比svn快很多。
  4. git的分支远比svn的强大,内容完整性要优于svn。
  5. git只关心文件数据整体是否发生变化,而svn则只关心文件内容的具体差异。

2 Linux环境基础开发工具相关推荐

  1. 【Linux】Linux环境基础开发工具使用 —— yum | vim | gcc g++ | gdb | make makefile | 进度条 | git

    Linux环境基础开发工具使用 1. Linux软件包管理器yum 1.1 什么是软件包 1.2 软件安装三板斧 1.2.1 查看软件包 1.2.2 安装软件 1.2.3 卸载软件 2. vim 2. ...

  2. 【Linux】基础:Linux环境基础开发工具——make与Makefile

    [Linux]题解:Linux环境基础开发工具--make与Makefile 摘要:Makefile是一个文件定义了一系列的规则来指定编译过程以及更复杂的功能操作,make是一个命令工具,是一个解ma ...

  3. Linux 环境基础开发工具的使用

    目录 Linux 软件包管理器 yum 1.软件包的概念 2.查看软件包 3.如何安装软件 4.如何卸载软件 Linux编辑器-vim使用 1. vim的基本概念 2. vim的基本操作 3. vim ...

  4. linux篇【3】:Linux 环境基础开发工具yum,vim,gcc,makefile,git

    目录 一.Linux 软件包管理器 yum 1.什么是软件包 2.centos 7中安装形式 3.yum安装好处: 4.yum工具的常用选项 (1)yum list | grep sl 软件包信息介绍 ...

  5. Linux环境基础开发工具使用(上)

    Linux 软件包管理器 yum 在linux中如何安装卸载软件呢? Linux下安装软件有3种方式: 1.源码安装(不方便) 2.rpm安装--rpm -vih(不方便) 3.可能存在大量软件之间的 ...

  6. Linux环境基础开发工具

    Linux 软件包管理器 yum 什么是软件包? 在Linux下安装软件, 一个通常的办法是 下载到程序的源代码, 并进行编译, 得到可执行程序 .但是这样太麻烦了, 于是有些人把一些常用的软件提前编 ...

  7. Linux环境基础开发工具使用

    Linux开发工具 1.vim的基本概念 vim的常用模式 正常/普通/命令模式(command mode) 控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或者 ...

  8. 【Linux环境基础开发工具】软件包管理器-yum

    写在前面 今天我打算介绍如何在Linux环境下载软件, Linux作为一个操作系统,就像windows一样,当然是存在软件的. 目录 写在前面 怎么在Linux环境安装软件 源代码安装 rpm安装包安 ...

  9. Linux篇【3】:Linux环境基础开发工具使用(中)

    目录 一.Linux 编译器:gcc/g++ 的使用 1.1.知识拓展: 1.2.如何安装 C/C++ 标准静态库: 1.3.头文件与库文件: 1.4.静态库,静态链接,动态库,动态链接: 二.简单 ...

最新文章

  1. php long2ip,php ip2long和long2ip函数实现
  2. Java中的Set操作
  3. python绘图模块pandas_python绘图:matplotlib和pandas的应用
  4. leetcode-20-有效的括号
  5. java流与文件——读写二进制数据(DataOutput + DataInput)
  6. (80)FPGA面试题-请画出序列“1101 “检测状态转移图
  7. C#中的Nutshell函数式编程
  8. 设计模式(5)—— 工厂方法模式(Factory Method,创建型)
  9. 列表和字典操作的时间复杂度
  10. 10-微信小程序商城 分类和产品 产品列表(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
  11. QTP10.0的下载安装及所遇问题
  12. 新开课day16正则表达式作业
  13. 小红书用户画像分析_2018年小红书app用户群体分析报告
  14. Java GUI+MySQL 银行管理系统初级(课程设计)
  15. 计算机游戏锁怎么打开,键盘锁住了怎么解锁_解锁键盘步骤操作一览
  16. 解决IE兼容H5的问题
  17. 做自己喜欢做的事,需要勇气,也需要能力
  18. 浅谈安卓逆向协议(四)- ida pro - 小红书
  19. 轻量应用服务器 饥荒,饥荒服务端世界设置生成
  20. 多线程下载器 IDM

热门文章

  1. 当你累了的时候怎么办?
  2. 搜狐Q1财报发布:张朝阳手握四张王牌,关键看怎么打
  3. arcmap叠置分析_8.4. 叠置分析
  4. 浅析分布式系统背后的基础设施
  5. 云解析DNS是什么意思?云解析DNS有什么用?(中科三方)
  6. 微信小程序开发入门指南二
  7. 统计数字字符个数(C语言)
  8. 为什么你应该建立在波尔卡多
  9. 富士康鸿海公司布局视频监控 收购香港千里眼
  10. 大数据【企业级360°全方位用户画像】匹配型标签开发