文章目录
Linux软件包管理器 —— yum
简介
在Linux下安装软件, 一个通常的办法是运用yum指令,yum是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上。
yum的使用
如何显示可以安装的软件有哪些呢?
我们可以输入以下指令:
- yum list
搜索结果为:
通过
yum list
展示的内容过多,我们可以使用管道指令和grep进行筛选,以gcc为例:
- yum list | grep gcc
接来下我们如何安装某一款软件呢?以sl为例:
- sudo yum install sl
输入
y
,进行安装即可
最后我们如何想要卸载某一款软件?还是以sl为例:
- sudo yum remove sl
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一次性粘贴#次pdd+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 <stdio.h>2 #define NUM 103intmain()4{5// hello world6int a = NUM +1;7printf("NUM = %d\n", a);8}
- 预处理过程
- gcc -E test.c -o test.i
vim test.i 查看内容发现预处理过程包括宏定义,文件包含,条件编译和去注释等。
- 编译过程
- gcc -S test.i -o test.s
vim test.s 查看内容发现,在这个阶段首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,把代码翻译成汇编语言
- 汇编过程
- gcc -c test.s -o test.o
vim test.o查看内容发现,程序已经从汇编指令转为机器码
- 链接过程
- gcc test.o -o test
链接过程主要是将自己写的程序与函数或第三方库关联起来,生成可执行程序。
这里函数库分为静态库和动态库两种。
- 静态库是指编译链接的时候,将所有库文件的代码全部添加到可执行代码中,在运行时不需要库文件,但是静态库文件较大,其后缀为.a
- 动态库是在程序执行时由运行时链接文件加载库,节省系统的开销,动态库文件较小,其后缀为.so
gcc 默认生成的可执行文件是动态链接的,可以通过
file
命令查看验证。当然要想可执行文件是静态链接,可以通过
-static
命令。
***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指令让可执行程序带有调试信息。
使用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文件的书写格式为:
目标文件:依赖文件
gcc [选项] 依赖文件 -o 目标文件
以mytest.c为例,若想把预处理、编译、汇编和链接过程的文件都生成,Makefile的书写为:
make命令运行结果:
要想删除make运行得到的可执行文件,则只需要在Makefile文件中加入:
然后执行
make clean
即可。
PS:
.PHONY
是一个修饰符号,让其后面的命令总是可执行
版权归原作者 Sherry-77 所有, 如有侵权,请联系我们删除。