linux编程必备(yum vim gcc g++ gdb makefile)

简介: linux编程必备(yum vim gcc g++ gdb makefile)

文章目录


yum

(等同于手机上的应用市场)

Linux中安装软件并不简单方法

1.源码安装,编译一个源码进行安装

2.rpm安装,安装包

3.Linux可能存在大量软件之间的依赖关系,就需要安装许多第三方库,安装非常麻烦,因此可以使用

yum,自己会考虑依赖关系,而不许要我们去处理查找软件

可以搭配grep进行搜索过滤

下载安装

yum install (软件名)

删除软件

yum remove (软件名)

vim

  • IDE集成开发环境,干什么都可以,而linux里面可以安装这样的集成开发环境,但是我们一般不会这么做编写代码 —》vim(vi的升级版).vi 文本编辑器,从定位上和记事本没有任何差别,都是用来写代码的(只能写代码)
  • 编译代码
  • 调试代码
  • 发布代码,运行
    代码关系的维护(.h文件谁包含谁)
    这些写代码都要包含vim是多模式的编辑器

vim是多模式的编辑器

(默认是命令模式)

进入后按i可以插入文字

还有底行模式

命令模式

光标我们不用键盘中的上下左右

而用hjkl


h 在这4个字母的最左边所以是光标向左移动

l在最右边所以是向右移动

j(jump)向下跳,所以是向下移动

k(king)国王高高在上,所以向上移动


光标位置锚点,快速定位到行首 shift+^

行尾 shift+$

gg光标直接定位到第一行

shift+g直接定位到行尾

n+shift +g 快速定位到指定行

w可以按照单词为单位,一个单词一个单词向后进行查找

b向前移动


复制粘贴

yy复制当前行

p就粘贴

n+p就是一次重复粘贴n行

2yy就从当前行往下两行复制(多行复制)

u就可以撤销之前的操作

dd:删除当前光标所在行

dd+p就是剪切

n+dd就是

shift+~大小写切换

(小写)x就会把当前所在光标的1个字符给删掉

n+x就会把光标之后的n个字符给删掉

(大写)X就会从光标处往前删除字符

n+X就会从光标处往前删除n个字符

r可以替换光标处的字符

shift r(替换模式),可以实现多个内容的替换

ctrl r撤销刚才的撤销


在插入模式也可以这样弄,但是特别慢

底行模式

shift :

set nu可以把行号调出来

set nonu就取消行号

vs .c可以实现不同文件的分屏显示

ctrl ww就可以在不同屏中光标切换

wq就是退出光标所在的屏幕

w是保存

q是退出

!强制

插入模式

进入插入模式有

a光标往后移动一位进入插入模式

o就是光标往下一行进入插入模式

插入模式不能进入底行模式

vim的配置

vim配置在自己的配置文件中,只会影响自己的操作,不会影响别的用户

root有自己的配置文件,只影响自己,

(只会影响自己,不会影响别人)

gcc和g++

gcc

背景知识

  • 预处理(进行宏替换,去注释,头文件展开,条件编译)
  • 编译(生成汇编)
  • 汇编(生成机器可识别代码)
  • 连接(生成可执行文件或库文件)1.为什么c程序的翻译是这个过程


一开始都是二进制编程(打孔编程),只有高级科研人才才可以写

出现了汇编语言 助记符,利用编译器变成二进制代码

出现了c语言,先变成汇编语言,更加简单,开发效率更加高

C语言中有很多需要被提前处理的,比如注释等

2.链接如何理解


自己写的c程序和语言上或者第三方库

gcc简单演示

在vim上编写mycode.c文件

gcc是编译c语言程序

  • gcc [目标文件]
  • ./a.out

gcc选项

预处理

gcc -E mycode.c :开始进行翻译,完成预处理之后,就停下来不做下面的事情

将预处理生成的写入一个临时文件 mycode.i(已经经过了预处理阶段)

编译

gcc -S mycode.c(-S,开始进行程序的翻译,完成编译之后就停下来就不要往后走了)

因为已经经过了预处理所以可以直接使用mycode.i,跳过预处理阶段,并将生成的临时文件放入mycode.s里面

生成了汇编语言

汇编

计算机不可以直接执行汇编语言

汇编语言需要编译器

gcc -c mycode.c(从源文件开始)

也可以gcc -c mycode.s

汇编形成的二进制文件并不可以直接执行,叫做可重定向目标文件


链接

语言也是有库的!调用了第三方的语言库(一套头文件+一套库文件(libc.a,libc.so))

需要链接将我们自己的代码中的函数调用,外部数据,和库关系起来gcc mycode.o

gcc mycode.o -o mycode

自定义生成可执行程序的名字

./mycode

方便的时候也可以

gcc mycode.c -o mycode(生成可执行程序)推荐

./mycode

函数库

linux分为:


静态库: .a,指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了,其后缀名一般为“.a”,静态链接


动态库: .so 在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销,一般后缀名为“.so”,动态链接

(都和程序成功运行有关)

gcc默认采用动态链接方式,形成可执行程序

如果想要采用静态链接 -static

g++

编译c++程序,g++也可以编译c语言

g++和gcc的选项和过程都是一样的

Linux可以直接跑很多语言如python,shell

gdb

调试代码

gdb带上可执行程序的名字

如果一个程序可以被调试的,该程序的二进制文件一定加入了一些debug信息

release去掉了debug信息

linux中默认的可执行程序是release

但是我们如果想要调试的话,要g++ mycode.cpp -o mycode -g

加入-g选项就可以了

选项

run

相当于f5

list/l

会显示代码,一次显示10行,再l会接上之前代码后面显示

l 1会从第一行开始显示

b(breakpoint)(打断点)

b (行)

info b(显示断点)

再r一下,就在断点处停了下来

s

相当于f11

n

n

相当于f10

display

(常显示,每次调试都会显示一次)

相当于监视窗口查看一个变量的值

p

只显示一次

undisplay

不想再常显示之前设的变量

finish(结束当前函数)

可以自行的把一个函数给跑完

c(continue)

直接跳到下一个断电

until

直接跳到某一行

until 12

d

删除断电

d (几号断电)

disable

禁用断电

disable (第几个断点)

enable就开启断点

make/makefile

1.make是一条命令 ,makefile是一个文件

2.文件和文件之间的互相依赖关系

make和makefile可以达到我们形成可执行程序的目的

makefile

1.依赖关系

2.依赖方法清理功能(删除可执行文件)

.PHONY 修饰对于的符号,伪目标(总是可执行的)的概念

make一次只会执行一个依赖关系,


相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
22天前
|
算法 Ubuntu Linux
在Linux中,对比apt和yum两种包管理器在不同Linux发行版中应用有何区别?
在Linux中,对比apt和yum两种包管理器在不同Linux发行版中应用有何区别?
|
21天前
|
Ubuntu Linux 索引
在Linux中,APT和YUM软件包管理器的何区别?
在Linux中,APT和YUM软件包管理器的何区别?
|
22天前
|
缓存 Ubuntu Linux
在Linux中,Yum、Dnf、Apt-get和Pacman有何区别?
在Linux中,Yum、Dnf、Apt-get和Pacman有何区别?
|
28天前
|
Linux Android开发 开发者
【Linux】yum的认识与简单配置
【Linux】yum的认识与简单配置
|
4月前
|
NoSQL 搜索推荐 openCL
【C/C++ 调试 GDB指南 】gdb调试基本操作
【C/C++ 调试 GDB指南 】gdb调试基本操作
294 2
|
4月前
|
NoSQL Linux 开发工具
【深入解析git和gdb:版本控制与调试利器的终极指南】(下)
【深入解析git和gdb:版本控制与调试利器的终极指南】
|
15天前
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
41 10
|
17天前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
16天前
|
NoSQL
技术分享:如何使用GDB调试不带调试信息的可执行程序
【8月更文挑战第27天】在软件开发和调试过程中,我们有时会遇到需要调试没有调试信息的可执行程序的情况。这可能是由于程序在编译时没有加入调试信息,或者调试信息被剥离了。然而,即使面对这样的挑战,GDB(GNU Debugger)仍然提供了一些方法和技术来帮助我们进行调试。以下将详细介绍如何使用GDB调试不带调试信息的可执行程序。
21 0
|
3月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
31 1