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
相关文章
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
19天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
Linux C++
Linux c/c++之makefile的基础使用
Linux下C/C++项目中makefile的基本使用,包括基础、进阶和高级用法,以及如何创建和使用makefile来自动化编译过程。
15 0
Linux c/c++之makefile的基础使用
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
94 6
|
2月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
139 3
|
2月前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
35 0
|
3月前
|
项目管理 敏捷开发 开发框架
敏捷与瀑布的对决:解析Xamarin项目管理中如何运用敏捷方法提升开发效率并应对市场变化
【8月更文挑战第31天】在数字化时代,项目管理对软件开发至关重要,尤其是在跨平台框架 Xamarin 中。本文《Xamarin 项目管理:敏捷方法的应用》通过对比传统瀑布方法与敏捷方法,揭示敏捷在 Xamarin 项目中的优势。瀑布方法按线性顺序推进,适用于需求固定的小型项目;而敏捷方法如 Scrum 则强调迭代和增量开发,更适合需求多变、竞争激烈的环境。通过详细分析两种方法在 Xamarin 项目中的实际应用,本文展示了敏捷方法如何提高灵活性、适应性和开发效率,使其成为 Xamarin 项目成功的利器。
53 1
|
3月前
|
安全 Linux 开发工具
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
|
3月前
|
Linux
揭秘Linux心脏:那些让你的编程事半功倍的主要系统调用
【8月更文挑战第31天】Linux中的系统调用是操作系统提供给应用程序的接口,用于请求内核服务,如文件操作、进程控制等。本文列举了22种主要系统调用,包括fork()、exec()、exit()、wait()、open()、close()、read()、write()等,并通过示例代码展示了如何使用fork()创建新进程及使用open()、write()、close()操作文件。这些系统调用是Linux中最基本的接口,帮助应用程序与内核交互。
47 1