Linux环境 基础开发工具使用
Posted 在下赵某人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux环境 基础开发工具使用相关的知识,希望对你有一定的参考价值。
Linux 软件包管理器 yum
什么是软件包
- 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.
- 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解为软件安装程序)放在一个服务器上,
通过包管理器(可以理解为软件商店)可以很方便的获取到这个编译好的软件包, 直接进行安装. - 软件包和软件包管理器, 就好比 “安装包” 和 “应用商店” 这样的关系.
- yum是Linux下非常常用的一种包管理器. 主要应用在Fedora,RedHat, Centos等发行版上.
关于 rz、sz
rz,sz是 windows机器 和 远端的Linux机器 通过 XShell 传输文件的命令行工具。
安装:
- yum install lrzsz
用法:
- sz:将选定的文件发送到本地机器
- rz:运行该命令会弹出一个文件选择窗口,可以通过拖拽的方式将文件从本地上传到Linux服务器。
查看软件包
yum list 命令可以罗列出当前一共有哪些软件包. 包的数目可能非常多,我们需要使用 grep 命令筛选出我们需要的包。例如:
yum list | grep lrzsz
结果如下:
注意事项:
- 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
- "x86_64" 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
- "el7" 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示centos6/redhat6.
- base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.
如何安装软件
用install命令,例如 lrzsz 的安装:
sudo yum install lrzsz
yum 会自动下载对应的软件包,最后会进行询问,这时候敲 “y” 确认安装。最后会出现 “complete” 字样, 说明安装完成。
注意事项:
- 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
- yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
如何卸载软件
用remove命令,例如 lrzsz 的卸载:
sudo yum remove lrzsz
总结:
- 搜索: sudo yum list |grep xxx
- 安装: sudo yum install [-y] xxx
- 卸载: sudo yum remove [-y] xxx
Linux开发工具 — 编辑器vim使用
vi/vim都是多模式编辑器,但vim是vi的升级版本,vim兼容vi的所有指令。
安装vim:
sudo yum install [-y] vim
1. vim的基本概念
vim的三种常用模式:1.命令模式、2.插入模式、3.底行模式。
各模式的功能区分如下:
- 正常/普通/命令模式
- 控制屏幕光标的移动。
- 字符、字或行的复制、剪切、粘贴、删除。
- 进入 插入模式 下,或者到 底行模式
- 插入模式
- 只有在插入模式下,才可以做文字输入。
- 命令模式下,输入a或i或o即可进入该模式。按「ESC」键可回到命令行模式。
- 底行/末行模式
- 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
- 命令模式下,shift+: 即可进入该模式。按「ESC」键可回到命令行模式。
2. vim的基本操作
- 进入vim,输入:vim+文件名称,就进入vim编辑界面:
- 注意,进入vim之后,默认是处于[正常模式],要切换到[插入模式]才能够输入文字。
- [正常模式]切换至[插入模式]
- 输入a
- 输入i
- 输入o
- [插入模式]切换至[正常模式]
- 处于[插入模式],只能输入、删除文字。按「ESC」键可转到 [正常模式] 。
- [正常模式]切换至[末行模式]
- 「shift + ;」
- 退出vim及保存文件:在[正常模式]下,输入「shift+;」进入「末行模式」
- : w (保存当前文件)
- : wq (输入「wq」,存盘并退出vim)
- : q! (输入q!,不存盘强制退出vim)
3. vim正常模式命令集
- 进入、退出插入模式
- 按「 i 」进入插入模式后,从光标当前位置开始输入文件;
- 按「a」进入插入模式后,从目前光标所在位置的下一个位置开始输入文字;
- 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
- 从插入模式切换为命令模式按「ESC」键。
- 移动光标
- 「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移动
- 按「b」:光标回到上个字的开头
- 按「w」:光标跳到下个字的开头
- 按「 $ 」:移动到光标所在行的“行尾”
- 按「^」:移动到光标所在行的“行首”
- 按[gg]:进入到文本开始
- 按「G」:移动到文章的最后
- 按[num+shift+g]:光标定位到num行
- 复制、剪切(删除)、粘贴
- 「yy」:复制光标所在行到缓冲区。
- 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
- 「dd」:删除光标所在行
- 「#dd」:从光标所在行开始删除#行
- 「p」:将缓冲区的内容粘贴到光标所在位置的下一行。
- 「#p」:将缓冲区的内容粘贴#次到光标所在位置的下一行。
- 文本修改
- 「r」:替换光标所在处的字符。
- 「#r」:批量替换光标所处字符开始往后的#个字符。
- 「R」:进入替换模式,替换光标所到之处的字符,直到按下「ESC」键为止。
- 「x」:剪切(删除)光标所在处的字符,多次按x会不断往后替删。
- 「#x」:批量剪切(删除)光标所处字符开始往后的#个字符。
- 「X」:剪切(删除)光标所在处前面的字符,多次按x会不断往前替删。
- 「#X」:批量剪切(删除)光标所在处的前面#个字符。
- 「 ~ 」:将光标所在处字符进行大小写替换。按多次 ~ 会不断往后替换。
- 撤销与重做
- 「u」:如果误执行一个命令,可以按下 u ,回到上一个操作。
- 「ctrl + r」: 撤销的恢复
4. vim末行模式命令集
附:正常模式按「:」即可进入末行模式。
- 保存、离开文件
- 「w」: 保存。
- 「w!」: 强制保存。
- 「q」: 退出。
- 「q!」: 强制退出。
- 「wq」: 保存并退出。
- 「wq!」: 强效保存并退出。
- 批量化替换
- %s/test/TEST/g: 进行批量化替换,(后者替换前者)。即:TEST 替换 test。
- 感叹号+指令
- 在底行,感叹号!后面可以跟任何命令。
- eg:
!gcc filename.c —> 在底行直接对filename.c进行编译。
!./a.out —> 不退出vim,在底行直接将编译结果运行
- 列出行号 + 跳到文件中的某一行
- 「set nu」: 会在文件中的每一行前面列出行号。
- 「num」: 冒号后输入一个数字 num ,回车就会跳到该行。
- 查找字符
- 「 /关键字」: 回车会将所有关键词高亮出来,按「n」会向下查找。
- 「?关键字」: 回车会将所有关键词高亮出来,按「n」会向上查找。
- 多窗口
- 「vs」: vs + filename,左右filename的分屏。
- 「ctrl + 双击w」: 分屏窗口的切换。
5. vim操作总结
6. 简单vim配置
vim配置极其麻烦,接下来是一些原理。最后会引用一个大佬的自动配置方法。(推荐使用,也可以自己配置)
- 配置文件的位置
- 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
- 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
- 切换用户成为自己执行 su ,进入自己的主工作目录。
- 打开自己目录下的.vimrc文件,自己写入配置。(自己写入配置)
- 常用配置选项
- 设置行号 — set nu
- 设置下划线 — set cursorline
- 设置自动锁紧 — set autoindent
- 设置缩进的空格数为4: set shiftwidth=4
- 设置c 风格缩进 — set cindent
- 自动补全括号:
inoremap ( ()i
inoremap [ []i
inoremap i
inoremap < <>i - 高亮匹配括号 — hi MatchParen ctermbg=blue ctermfg=white
- 高亮匹配括号 — :NoMatchParen
- 如果要再开启,可以用 — :DoMatchParen
- 如果要更改颜色,可以用hi,例如: — :hi MatchParen ctermbg=blue ctermfg=white
- 使用插件
- 安装TagList插件,下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到~/.vim/plugin
- 在~/.vimrc 中添加: let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window=1
- 安装文件浏览器和窗口管理器插件: WinManager
- 下载winmanager.zip,2.X版本以上的
- 解压winmanager.zip,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到~/.vim/plugin
- 在~/.vimrc 中添加 let g:winManagerWindowLayout=‘FileExplorer|TagList nmap wm :WMToggle
- 然后重启vim,打开~/XXX.c或~/XXX.cpp, 在normal状态下输入"wm", 你将看到上图的效果。更具体移步:点我, 其他手册,请执行vimtutor命令。
- 安装方法:(大佬的)
支持环境
目前只支持 Centos7 x86_64. 后面会考虑 Ubuntu 等发行版的支持.
安装方法
在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 “不推荐” 直接在 root 下执行):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注:
引用自:https://gitee.com/HGtz2222/VimForCpp?_from=gitee_search#%E5%AE%89%E8%A3%85%E6%96%B9%E6%B3%95
7. 更深入可以去参考
Linux开发工具 — 编译器-gcc/g++使用
1. 背景知识
2. gcc如何完成
格式: gcc [选项] 要编译的文件【选项】[目标文件]
- 预处理(进行宏替换等)
- 预处理功能主要包括:宏定义,文件包含,条件编译,去注释等。
- 预处理指令是以#号开头的代码行 (头文件、宏等)。
- 实例: gcc –E hello.c –o hello.i
- 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
- 选项“-o”是指目标文件, “.i”文件为已经过预处理的C原始程序。
- 编译(生成汇编)
- 编译功能主要包括:检查代码的规范性、检查是否有语法错误等,检查无误后 gcc 会把代码翻译成汇编语言 (.s文件)。
- 选项“-S”,该选项的作用是让 gcc 只进行编译而不进行汇编。编译结束会生成汇编代码。
- 实例: gcc –S hello.i –o hello.s
- 汇编(生成机器可识别的代码)
- 汇编阶段是把编译阶段生成的 .s文件转成 .o文件。
- .o文件即:目标文件 也叫 目标二进制
- 选项“-c”,该选项的作用是让 gcc 汇编结束后停止编译过程。代码已转化为“.o”的二进制目标代码了。
- 实例: gcc –c hello.s –o hello.o
- 连接(生成可执行文件或库文件)
- 在成功编译之后,就进入了链接阶段。
- 完成链接后会生成可执行文件.out 。
- 实例: gcc hello.o –o hello
- 函数库的概念:
- 我们的C程序中,并没有定义“printf”的函数实现,且“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么是在哪里实“printf”函数的呢?
- 答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用
- 函数库一般分为静态库和动态库两种。
- 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。静态库后缀名一般为“.a”
- 动态库在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样就节省了系统的开销,因此生成的文件比较小。动态库一般后缀名为“.so”。
- gcc 在编译时默认使用动态库。如前面所述的 libc.so.6 就是动态库。
- gcc选项
- -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
- -S 编译到汇编语言不进行汇编和链接
- -c 编译到目标代码
- -o 文件输出到文件
- -static 此选项对生成的文件采用静态链接
Linux开发工具 — 调试器-gdb使用
Linux开发工具 — 项目自动化构建工具-make/Makefile使用
以上是关于Linux环境 基础开发工具使用的主要内容,如果未能解决你的问题,请参考以下文章