Linux|给自己一首歌的时间学习来Linux基本开发工具


文章目录

  • Linux软件包管理器 —— yum
    • 简介
    • yum的使用
  • Linux编辑器 —— vim
    • Vim的三种常用模式
    • Vim的基本操作
    • Vim的正常模式命令集
    • Vim的末行模式命令集
    • Vim的配置
  • Linux编译器 —— gcc/g++
  • Linux调试器 —— gdb
  • Linux项目管理器 —— make/Makefile

Linux软件包管理器 —— yum 简介 在Linux下安装软件, 一个通常的办法是运用yum指令,yum是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上。
yum的使用 如何显示可以安装的软件有哪些呢?
我们可以输入以下指令:
  • yum list
搜索结果为:
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

通过yum list展示的内容过多,我们可以使用管道指令和grep进行筛选,以gcc为例:
  • yum list | grep gcc
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

接来下我们如何安装某一款软件呢?以sl为例:
  • sudo yum install sl
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

输入y,进行安装即可
最后我们如何想要卸载某一款软件?还是以sl为例:
  • sudo yum remove sl
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

Linux编辑器 —— vim Vim的三种常用模式 1. 正常/普通/命令模式(Normal mode)
  • 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段等
  • 可按i/a/o进入插入模式,shift+; 进入末行模式
2. 插入模式(Insert mode)
  • 只有在插入模式下,才可以进行编辑代码
  • Esc可退回命令模式,不能直接到末行模式
3. 末行模式(Last line mode)
  • 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作
  • Esc可退回命令模式,不能直接到插入模式
Vim的基本操作 在命令行输入vim+文件名可以直接进入vim全屏幕编辑画面,当该目录下不存在此文件时,vim会自动创建文件。进入vim模式之后,是处于正常模式。正常模式可以与插入模式和末行模式相互切换,但插入模式和末行模式之间不能直接切换。
Vim的正常模式命令集
  • 移动光标
指令 功能
h/j/k/l 光标向左/下/上/右移动
gg 移动到文章开始
shift+g 移动到文章最后
#+shift+g 光标移动到文章的第#行
shift+^ 移动光标所在行的行首
shift+$ 移动光标所在行的行尾
w 光标跳到下个字的开头
e 光标跳到下个字的字尾
b 光标回到上个字的开头
#l 光标移动到该行的第#个位置
  • 删除文字
指令 功能
dd 删除当前光标所在行
#dd 从光标所在行开始删除#行
x 删除光标所在位置的一个字符
#x 删除光标所在位置的#个字符
X(shift+x) 删除光标所在位置前面的一个字符
#X 删除光标所在位置前面的#个字符
  • 复制粘贴
指令 功能
yy 复制当前行
#yy 复制光标所在行往下数的#行
p 将缓冲区的字符粘贴到光标所在位置
#p 一次性粘贴#次p
dd+p 剪切
  • 其他
指令 功能
u 撤销上一次操作
shift+~ 快速大小写切换
r 替换光标所在处的字符
R 替换光标所到之处的字符,直到按下ESC键为止
Vim的末行模式命令集 在使用末行模式之前,需要保证此时处于正常模式,再按shift+; (:)进入末行模式。
指令 功能
set nu 在文件中的每一行前面列出行号
set nonu 取消文件中的行号
vs 文件 多文件操作
ctrl+w+w 文件之间的切换
w 保存当前的文件
q 退出当前文件
! 强制执行某个指令
Vim的配置 通常我们可以自己配置vim,vim的配置步骤为
  • 在用户目录下创建一个文件.vimrc
  • 在文件中添加配置选项即可
配置选项可以百度,这里举例
  • 设置语法高亮:syntax on
  • 显示行号:set nu
  • 设置缩进的空格数:set shiftwidth = 4
Linux编译器 —— gcc/g++ vim编辑器编写代码后,c程序使用gcc编译器,c++程序使用g++编译器。
使用方法:
  • gcc xxx.c
默认生产的可执行文件为a.out,要想生成指定文件名可用-o+文件名。
  • gcc xxx.c -o xxx
在学习gcc编译器之前,先回顾一下c程序编译链接的过程:
  • 预处理(进行宏替换)
  • 编译(生成汇编)
  • 汇编(汇编转为机器码)
  • 链接(生成可执行文件或库文件)
gcc编译.c文件时,可以通过不同选项实现查看各个过程的编译结果。
示例程序test.c如下:
1 #include .h> 2 #define NUM 10 3 int main() 4 { 5// hello world 6int a = NUM + 1; 7printf("NUM = %d\n", a); 8 }

  • 预处理过程
  • gcc -E test.c -o test.i
vim test.i 查看内容发现预处理过程包括宏定义,文件包含,条件编译和去注释等。
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

  • 编译过程
  • gcc -S test.i -o test.s
vim test.s 查看内容发现,在这个阶段首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,把代码翻译成汇编语言
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

  • 汇编过程
  • gcc -c test.s -o test.o
vim test.o查看内容发现,程序已经从汇编指令转为机器码
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

  • 链接过程
  • gcc test.o -o test
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

链接过程主要是将自己写的程序与函数或第三方库关联起来,生成可执行程序。
这里函数库分为静态库和动态库两种。
  • 静态库是指编译链接的时候,将所有库文件的代码全部添加到可执行代码中,在运行时不需要库文件,但是静态库文件较大,其后缀为.a
  • 动态库是在程序执行时由运行时链接文件加载库,节省系统的开销,动态库文件较小,其后缀为.so
gcc 默认生成的可执行文件是动态链接的,可以通过file命令查看验证。当然要想可执行文件是静态链接,可以通过-static命令。
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

PS:有些服务器没有安装C语言的静态库,运行gcc -static test.c -o test_static会出现can not found -lc的错误,这里只需要运行sudo yum install glibc-static,安装静态库即可。
gcc命令选项:
选项 功能
-E 只激活预处理,不生产文件
-S 编译到汇编语言
-c 编译到目标代码
-o 生成指定文件
-g 生成调试信息
-static 采用静态链接库文件
Linux调试器 —— gdb 当使用gcc编译程序时,出现错误,又想和vs一样进行程序调试,怎么办呢?
在Linux下也有支持程序调试的调试器:gdb
用gdb调试的指令为:
  • gdb 文件
此时文件必须带有调试信息,使用-g指令让可执行程序带有调试信息。
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

使用ctrl+d或quit退出
常用的调试命令:
list/l —— 显示源代码
r/run —— 运行程序
n/next —— 单条运行
s/step —— 进入函数调用
break/b 行号 —— 在某一行设置断点
info b —— 查看断点信息
delete breakpoints n —— 删除序号为n的断点
display 变量名 —— 跟踪查看变量的值
undisplay n —— 取消跟踪查看序号为n的变量
p 变量名 —— 打印变量值
finish —— 执行完当前函数
continue —— 执行到下一断点
until 行号 —— 执行到指定行
Linux项目管理器 —— make/Makefile 实现一个项目通常会有很多文件,Linux通过Makefile来管理这些文件的运行先后等复杂操作。
make是一个指令,Makefile是一个文件,两者搭配使用,实现项目自动化构建。
Makefile文件的书写格式为:
【Linux|给自己一首歌的时间学习来Linux基本开发工具】目标文件:依赖文件
gcc [选项] 依赖文件 -o 目标文件
以mytest.c为例,若想把预处理、编译、汇编和链接过程的文件都生成,Makefile的书写为:
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

make命令运行结果:
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

要想删除make运行得到的可执行文件,则只需要在Makefile文件中加入:
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

然后执行make clean即可。
Linux|给自己一首歌的时间学习来Linux基本开发工具
文章图片

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

    推荐阅读