软件包和软件包管理器, 就好比手机上的"App" 和 “应用商店”
所以yum的作用主要是在Linux下安装软件
注意:
关于 yum 的所有操作必须保证主机(虚拟机)网络畅通
通过yum list 命令可以罗列出当前一共有哪些软件包
我们可以使用grep命令筛选出我们需要的包
软件名"lrzsz"
“x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配
“el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
os表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念
sudo yum install (-y) lrzsz
加上-y后直接自动安装不用输入y确认
安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成,卸载也一样
centos中任何时刻只允许一个yum运行
sudo yum remove lrzsz
Windows传到Linux直接拖拽到命令框
Linux到Windows用sz 文件名
本质是多模式的文本编辑器
vim目前包括10多种模式,下面我们来讲讲其中的三种模式
vim 文件名 进入文本编辑器(如下图):
可以看到进入默认是Normal(命令模式)
如果要退出就进入底行模式输入wq!退出
命令:
shift+$:行尾
shift+^:行头
shift+g:文本最后一行开头
gg:文本第一行开头
n+shift+g:定位到第n行开头
h,j,k,l:左下上右
w:按照"单词"从左向右移动,每次光标指向下一个单词的开始
e:按照"单词"从左向右移动,每次光标指向下一个单词的结尾
b:按照"单词"从右向左移动
#l:光标移到该行的第#个位置
ctrl+b:下翻一页
ctrl+f:上翻一页
ctrl+u:下翻半页
ctrl+d:上翻半页
复制粘贴:
yy:复制光标所在行
nyy:从光标行开始复制n行
nyw,yw:按照单词复制
p:粘贴
np:粘贴n次
撤销:
u:撤销
ctrl r:恢复刚刚的撤销
删除:
dd:删除光标所在行
ndd:从光标所在行开始删除n行
dd,ndd完再加p:就可以实现剪切的功能
x,nx:删除光标所在字符
shift+x(X),nX:往前删除字符,不包括光标
替换:
shift+~:大小写切换
r,nr:替换光标所在字符
shift+r®:进入替换模式
跳至指定的行:
#G:移动光标至文章的第#行行首
插入模式就是正常的文本编辑
set nu: 输入set nu后,会在文件中的每一行前面列出行号
wq!:保存并退出文本编辑器,w表示保存写的内容,q表示退出,!表示强制
vs 文件名:分屏
ctrl+ww:光标在分屏下切换
gcc编译:
格式:
gcc [选项] 要编译的文件 [选项] [目标文件]
c程序的翻译:
1 预处理:
头文件展开,去注释,宏替换,条件编译
gcc –E test.c –o test.i
选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程
选项“-o”是指将预处理过的文件结果放入test.i中
gcc test.c -D π=3.14
-D 宏的命令行定义,可以动态地进行宏定义
gcc –S test.c –o test.s
只进行编译而不进行汇编,生成汇编代码
3. 汇编(生成可重定向文件)
gcc –c test.s –o test.o
汇编代码转化为二进制目标代码
4 链接(生成可执行文件或库文件)
gcc test.o –o test
目标文件只有函数调用没有函数实现,链接过程的本质是将自己的函数调用过程与实现关联起来
lld 文件名
查看文件所依赖的库
可以看到test.c使用了c标准库该库是一个动态库
file 文件名
查看文件的详细类型
gcc用于写c语言,输入命令时将gcc改成g++就可以进行c++的编写
作用:减少开发的工作量
函数库一般分为静态库和动态库两种
动态库 | 静态库 | |
---|---|---|
原理 | 程序需要找到库函数,执行后返回再继续执行剩余代码 | 在链接的时候,需要的库函数会拷给程序,直接在程序里面执行 |
优点 | 省空间,体积小,加载速度快 | 不依赖第三方库,可移植性强 |
缺点 | 依赖第三方库,可移植性弱 | 浪费空间,加载速度慢 |
gcc生成可执行程序,默认是动态链接的
gcc加上-static生成静态链接
调试:gdb 文件名
退出: ctrl + d 或 quit
centos7中 gcc默认生成的可执行程序是release(文件比debug小,不可被调试)
添加-g让程序以debug方式发布
调试命令:
list(或者l) (行号):显示文件源代码,接着上次的位置往下列,每次列10行
list(l) 函数名:列出某个函数的源代码
r或run:运行程序
break(或者b) 行号:在某一行设置断点
info b :查看断点信息
delete(或者d) n:删除序号为n的断点
p 变量:打印变量值
n 或 next:逐过程执行
s或step:逐语句,进入函数调用
display 变量名:监视查看一个变量,每次停下来都显示它的值
undisplay 编号:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
finish:执行到当前函数返回,然后挺下来等待命令
continue(或c):跳到下一个断点
set var:修改变量的值
breaktrace(或bt):查看各级函数调用及参数
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建
$@:依赖关系中的目标文件
$^:依赖关系中的依赖文件列表
$<:依赖关系中的一个一个的依赖文件