linux篇linux开发工具的简单使用
Posted 东条希尔薇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux篇linux开发工具的简单使用相关的知识,希望对你有一定的参考价值。
作者介绍:
关于作者:东条希尔薇,一名喜欢编程的在校大学生
主攻方向:c++和linux
码云主页点我
作者CSDN主页地址
我们学习linux,不仅要学会它的使用,也要必须掌握以linux平台做c/c++开发的基本方法,软件
本文将为大家带来linux的一些基础的开发方法
目录
linux的软件管家——yum
简介
我们先设想一下,我们要在windows上下载软件,需要一个什么流程?
当然是需要在网上找到对应的软件包,再进行下载啦,如果要更方便的话,我们同样可以使用软件市场下载软件
比如微软软件商店
在这里,我们可以很轻松地找到我们需要下载什么软件,并且下载软件是自动化的,完全不需要另外的操作
在linux下,有没有这样的软件管家呢?
有的!它就是yum!
补充:为什么我们需要yum下载软件?
首先,linux软件下载还有其它几种方式:
- 源码安装:将软件源代码进行编译
- rpm安装:利用linux内置的安装包安装:类型安卓的apk文件
但是以上两种安装方式:或多或少会有安装包难找,安装需要大量的其它依赖文件
这样我们的安装成本将大幅增加
所以我们linux也必须要有一个内置的软件管家,所以,yum就问世了
yum的使用方式
yum软件的搜索
首先,我们输入
yum list
就能显示出所有在yum中能安装的软件
如果我们要获取有关python2的软件,怎么进行搜索呢?
还记得我们第一篇文章讲的管道吗?
我们将list数据通过管道传输在grep指令
而grep可以通过关键字抓取数据
所以我们可以输入
yum list | grep python2
这个就是我们yum最基本的搜索方式
安装与卸载
注意:安装与卸载都需要root权限
很简单,直接输入
sudo yum install xxx
就能安装软件了
比如,我们要安装一个叫sl的软件
等待一段时间,就能安装完成
我们卸载只需要下面这条指令:remove
sudo yum remove xxx
比如我们把我们刚才安装的软件卸载
关于yum,我们只需要了解以上的指令,就足够我们使用了
补充一点yum的选项:
yum -y
如果使用上面的选项安装软件,就无需用户手动确认,直接安装即可
接下来是项目开发部分:
我们要完成一个项目的开发:以下几个东西是必不可少的
- 代码编辑器
- 编译器
- 调试
- 项目文件组织管理工具
我将通过以上四个点,来为大家依次介绍一下linux下的c/c++开发
linux代码编写工具:vim
vim是linux下一个优秀的文本编辑工具,通过配置各种各样的组件,可以完成各种各样方便的附加功能
因为vim实在太过强大,所以笔者只介绍一些常用的指令
至于组件,作者找了一个gitee上的项目,可以直接安装,十分强大的c/c++代码编写组件
vim进入:
我们直接vim 紧跟文件名就可:比如
vim test.c
如果文件夹内没有这个文件,系统是会默认创建的
vim的纯净界面就像下面这样
而我们进去,我们发现:为啥我把键盘都敲烂了,还是打不了代码?
这就涉及到vim的三种模式了:
- 正常模式:这个模式下可以控制光标的移动,可以进行字符的删除,复制,粘贴,替换等命令。正常模式下按i即可进行插入模式
- 插入模式:可以做文字的输入,这个模式下与windows下的txt文件编辑没有区别!直接用就行了!按esc即可退出到正常模式
- 末行模式:输入冒号进入(即shift+;)可以进行文件的保存,退出,查找等其它指令
综上所述,我们只有在插入模式下,才能输入代码!
我们试试快速写出我们在linux下的第一个代码
如果完成了以上操作,恭喜你!你已经掌握的插入模式!
如果我们要保存退出的话,就需要用到末行模式了:输入wq即可保存和退出
然后我们cat查看,已经成功写入了
末行模式还有一些其它的命令:重点将会加粗
按键 | 功能 |
---|---|
w | 保存当前的文件 |
q | 退出当前文件 |
! | 强制执行某个指令(例如q!不存盘退出) |
set nu | 显示对应行号 |
#n | 跳到n行 |
/ | 查找你输入的字符,可以一直按n往后找 |
? | 查找你输入的字符,可以一直按n往后找 |
vs xxx | 将xxx与当前文件分屏显示 |
对以上指令的演示:
set nu(输入set nonu去掉行号)
/和?(它们的区别是/按n是从上往下找,而?是从下往上)
分屏操作
接下来是vim在正常模式下的操作,加粗的需要大家重点记忆,这里就不做演示了,演示的效果也不明显
移动光标
按键 | 指令 |
---|---|
G(shift+g) | 跳到文本的最后 |
gg(连按两下) | 跳到文章开始 |
$(shift+4) | 移动到光标所在行尾 |
^(shift+6) | 移动到光标所在行首 |
w | 跳到下个字开头 |
e | 跳到下个字结尾 |
b | 跳到上个字开头 |
#l | 光标移到该行的第#个位置 |
删除文字
按键 | 指令 |
---|---|
x | 每按一次,删除光标所在位置的字符 |
X(shift+x) | 每按一次,删除光标所在位置的“前面”一个字符 |
#x | 例如,6x表示删除光标所在位置的“后面(包含自己在内)”6个字符 |
dd(连点两下) | 删除光标所在行 |
#dd | 从光标所在行开始删除#行 |
复制
注意:其实dd并不是删除,而是剪切!(可以使用p指令)
按键 | 指令 |
---|---|
yy | 复制光标所在行到缓冲区。 |
#yy | 例如,6yy表示拷贝从光标所在的该行“往下数”6行文字。 |
p | 将缓冲区内的字符贴到光标所在位置。(粘贴) |
其它
按键 | 指令 |
---|---|
r | 替换光标所在处的字符。 |
R | 替换光标所到之处的字符,直到按下ESC键为止。 |
u | 撤销 |
#G | 例如,15G,表示移动光标至文章的第15行行首。 |
vim的简单配置
我们知道,我们要显示行号需要手动输入set nu,每次进入都需要手动设置
那么,我们能不能刚进文件不需要指令,自动显示行号呢?
我们就需要对vim进行一些简单的配置
配置方法:在自己的家目录下文件夹中新建一个.vimrc
我们在新建的文件夹下输入我们需要配置的指令就行了
linux下的编译器,gcc,g++
我们在上述写的程序,可以直接使用gcc来编译
gcc是一款可以编译c语言代码的编译器,如果想编译c++代码可以使用g++
使用方法:
gcc test.c
运行方法是:
./xxxx例如:./a.out
在学习gcc选项之前,我们先回顾一下c程序的编译过程
- 预处理:去注释,展开宏,头文件
- 编译:生成汇编代码
- 汇编:生成机器二进制代码
- 链接:通过链接函数和其它第三方库,生成可执行程序或库文件
而这里的库,我们分为静态库(windows是.lib,linux是.a)和动态库
(windows是.dll,linux是.so)
它们的区别如下:
静态库是把库文件代码全部导入到我们要编译的程序中
动态库并没有这样做,而是在程序执行时再进行库链接
静态库占用内存很大,动态库占用内存小,可以节省系统开销
我们gcc中有几个选项,可以实现这几个过程的分离
我们以以下代码为例
提前说明一下,gcc的 -o 选项可以把输出放在特定的文件
预处理过程:
gcc -E test.c -o test.i
编译过程:这个过程会检查语法是否有错误
gcc -S test.i -o test.s
汇编过程,生成机器代码(乱码)
gcc -c test.s -o test.o
这个虽然是机器代码,但是却不能运行,(即使加上了可执行权限)
所以,我们还需要最后一步链接过程:
gcc test.o -o test
以上的所有过程,默认是一步到位的,通过选项可以实现分离
gcc选项总结:
选项 | 功能 |
---|---|
-E | 只激活预处理,这个不生成文件,需要进行重定向 |
-S | 编译到汇编语言不进行汇编和链接 |
-c | 编译到目标代码 |
-o | 文件输出到文件 |
-g | 生成调试信息 |
linux调试工具:gdb
代码编写好了,如果我们写的代码发生了运行时错误,需要在linux下调试时,可以用到这个工具
如果要调试时,我们在编译时必须让它生成调试信息
gcc debug.c -o debug -g
这样生成的程序我们才能对其进行调试
我们以以下程序举例
进入方法:
gdb xxx(文件名)
quit或ctrl+d退出gdb
一些常用命令:
l接着上次的位置,一次列出10行
r运行程序(到断点处)
n单条执行
s单条(会进入函数)
b设置断点
finish执行到当前函数返回(跳过函数)
p xx打印xx变量值
d x ,删除序号为x的断点,(不带x会删除所有断点)
display,跟踪查看一个变量
undisplay,取消跟踪
linux下项目管理工具:makefile
makefile可以实现自动化编译
通常在一个大型项目中,通常需要编译大量的源文件,我们又不可能一条一条的用gcc编译
我们的makefile就可以实现一次性编译,只要设置好对应文件的依赖关系即可
比如我们要编译一下test.c,我们同时还要查看它的中间文件.i.s.o等
我们先在当前项目文件夹下新建一个名叫Makefile的文件,对其进行编辑
格式:
可执行程序:依赖文件
gcc 文件 -o 程序
例如:
我们直接在当前文件夹下输入make,即可生成我们的程序
makefile的工作原理
自顶向下扫描,通常把生成可执行程序的步骤放在最前面,再往下解决依赖问题
例如:
我们的项目清理方式是固定的,参考下图的代码即可
使用方法
以上是关于linux篇linux开发工具的简单使用的主要内容,如果未能解决你的问题,请参考以下文章