Linux环境基础开发工具

Linux 软件包管理器 yum


什么是软件包/h3>

在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种:

  1. Xmodem:这种古老的传输协议速度较慢,但由于使用了CRC错误侦测方法,传输的准确率可高达99.6%

  2. Ymodem:这是Xmodem的改良版,使用了1024位区段传送,速度比Xmodem要快。

  3. Zmodem:Zmodem采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能,是目前最流行的文件传输协议

lrzsz 的使用(需要提前用 yum 安装)

功能:这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件

  • 从 Windows 传到 Linux :

    1. 使用 rz [ 选项 ] 具体选项可以使用 rz -h 进行查阅

    2. 直接将要上传到 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 + dquit 调试命令

  • (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文件

    Linux环境基础开发工具

如果是以这个为例子的话,其中:

  • 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进行处理,非常感谢!

上一篇 2022年11月18日
下一篇 2022年11月18日

相关推荐