Linux 软件包管理器 yum
什么是软件包/h3>
在Linux下安装软件, 一个通常的办法是 下载到程序的源代码, 并进行编译, 得到可执行程序 .但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成 软件包(可以理解成windows上的安装程序) 放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
-
软件包名称: 主版本 .次版本 .源程序发行 -软件包的发行 .主机平台.cpu架构.
-
“x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
-
“el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
- 最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.
在Linux下安装软件, 一个通常的办法是 下载到程序的源代码, 并进行编译, 得到可执行程序 .但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成 软件包(可以理解成windows上的安装程序) 放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
- 软件包名称: 主版本 .次版本 .源程序发行 -软件包的发行 .主机平台.cpu架构.
- “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
- “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
- 最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.
补充:
yum工具在每次安装指定软件包的时候,都会检测源服务器上的软件包信息,为了便捷不用每次都去搜索软件包信息,因此使用 yum makecache 将软件包信息缓存到本地,使用 yum clean all 清理老旧的缓存信息
yum search 命令:搜索包含指定关键字的软件包
**yum -y update:**升级所有包同时,也升级软件和系统内核;
**yum -y upgrade:**只升级所有包,不升级软件和系统内核,软件和内核保持原样
/p>
安装与卸载软件包
yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装。出现 “complete” 字样, 说明安装完成.
注意事项:
- 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
- yum 安装软件只能一个装完了再装另一个. 正在 yum 安装一个软件的过程中, 如果再尝试用 yum 安装另外一个软件, yum会 错.
- 如果 yum 错, 请自行百度.
拓:lrzsz简介
rz,sz 是 Linux/Unix 同 Windows 进行 ZModem 文件传输的命令行工具。
rz 可以很方便的从客户端传文件到服务器,sz 也可以很方便的从服务器传文件到客户端,就算中间隔着跳板机也不影响。
rz :(receive Zmodem)
sz :(send Zmodem)远程文件传输的工具有很多,例如 rz、sz、scp、sftp、ftp等。
如果环境服务器需要通过跳板机(relay)访问,使用 rz、sz 传输更为方便。
在 SecureCRT 下的传输协议有 ASCII、Xmodem、Ymodem、Zmodem 4种:
Xmodem:这种古老的传输协议速度较慢,但由于使用了CRC错误侦测方法,传输的准确率可高达99.6%
Ymodem:这是Xmodem的改良版,使用了1024位区段传送,速度比Xmodem要快。
Zmodem:Zmodem采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能,是目前最流行的文件传输协议
lrzsz 的使用(需要提前用 yum 安装)
功能:这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件
从 Windows 传到 Linux :
使用 rz [ 选项 ] 具体选项可以使用 rz -h 进行查阅
直接将要上传到 linux 中的文件拖到 xshell 的界面。(小技巧)
从 Linux 到 Windows:
使用 sz [ 选项 ] 文件名
拓:配置 yum 源路径的方法
yum 的配置文件:/etc/yum.conf,(了解即可)
若进入到 CentOS-Base.repo 中:
1、 vim 的基本概念
正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
插入模式(Insert mode)
末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行 等操作。 在命令模式下,shift + : 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入 –> :help vim-modes
还有其他多种,笔记会不断填补…
2. vim 的基本操作
三种常见模式的转换:
附加
默认系统会自动携带动态库,而不存在静态库,如果我们需要使用静态库链接的话,需要自己手动安装
- 对于c:sudo yum install -y glibc-static
- 对于c++:sudo yum install -y libstdc+±static
3、gcc 选项
- -E: 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
- -S: 编译到汇编语言不进行汇编和链接
- -c: 编译到目标代码
- -o: 文件输出到 文件
- -D: 宏的命令行定义,多用于条件编译中的调试
- -static: 此选项对生成的文件采用静态链接
- -g: 生成debug程序。GNU 调试器可利用该信息。
- -std=c99 或 **-std=gnu99:**用c99或其他标准(或c++11等等)来生成可执行文件
- -shared: 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统有动态库.
- -O0: 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
- -O1
- -O2
- -O3
- -w: 不生成任何警告信息。
- -Wall: 生成所有警告信息。
Linux调试器-gdb使用
1.、背景
- 程序的发布方式有两种,debug模式和 release模式
- Linux gcc/g++出来的二进制程序,默认是release模式
- 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项
2、怎么查看文件是否可以 debug
用下面的命令即可,如果可以debug,则会显示debug相关的一些信息,否则没有相关信息。
objdump –syms your-binary | grep debug 或 objdump -t your-binary | grep debug
3、gdb 的使用
gdb binFile 退出: ctrl + d 或 quit 调试命令:
(list 或者 l)+ 行 :显示binFile源代码,接着上次的位置往下列,每次列10行
(list 或者 l)+ 函数名:列出某个函数的源代码
r 或 run: 运行程序,从开始连续而非单步执行程序
n 或 next: 单条执行,逐过程
s 或 step: 进入函数调用,逐语句
c(continue): 直接跳转到下一个断点
until X行 : 跳至X行
finish: 直接运行完毕对应的函数
b(break) + 行 :在某一行设置断点
b(break) + 函数名:在某个函数开头设置断点
i(info) b(break) : 查看断点信息
d(delete) b(breakpoints): 删除所有断点
d(delete) b(breakpoints) + 行 : 删除序 为 n 的断点
disable b(breakpoints): 禁用断点
**enable b(breakpoints): ** 启用断点
p(print) + 变量或表达式: 打印表达式的值,通过表达式可以修改变量的值或者调用函数
display 变量名: 跟踪查看一个变量,每次停下来都显示它的值,==相当于vs中的监视==*
undisplay 变量名: 取消对先前设置的那些变量的跟踪
bt(breaktrace): 查看各级函数调用及参数,相当于vs中的调用堆栈窗口
i(info) locals: 查看当前栈帧局部变量的值
set 变量名=n: 修改变量的值为 n
Linux项目自动化构建工具-make/Makefile
背景
- 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
- 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
- makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
- make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
- make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
实例:
依赖关系:
上面的例子中,mytmp文件就依赖于tmp.c文件
![]()
如果是以这个为例子的话,其中:
- mytmp 依赖于 tmp.o
- tmp.o 依赖于 tmp.s
- tmp.s 依赖于 tmp.i
- tmp.i 依赖于 tmp.c
这样子相当于上面例子的mytmp 依赖于 tmp.c,而我们一般操作时候也以 mytmp 依赖于 tmp.c 为主,更加简洁
依赖方法:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!