linux篇linux开发工具的简单使用

Posted 东条希尔薇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux篇linux开发工具的简单使用相关的知识,希望对你有一定的参考价值。

作者介绍:

关于作者:东条希尔薇,一名喜欢编程的在校大学生
主攻方向:c++和linux
码云主页点我
作者CSDN主页地址

我们学习linux,不仅要学会它的使用,也要必须掌握以linux平台做c/c++开发的基本方法,软件

本文将为大家带来linux的一些基础的开发方法


目录

linux的软件管家——yum

简介

我们先设想一下,我们要在windows上下载软件,需要一个什么流程?

当然是需要在网上找到对应的软件包,再进行下载啦,如果要更方便的话,我们同样可以使用软件市场下载软件

比如微软软件商店

在这里,我们可以很轻松地找到我们需要下载什么软件,并且下载软件是自动化的,完全不需要另外的操作

在linux下,有没有这样的软件管家呢?

有的!它就是yum!

补充:为什么我们需要yum下载软件?

首先,linux软件下载还有其它几种方式:

  1. 源码安装:将软件源代码进行编译
  2. 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开发工具的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Python基础篇3

Linux文件搜索命令

linux怎么查找软件所在位置

linux查看路径命令

Linux基础之常用命令篇

Linux学习笔记--pwd命令(查询所在目录位置)