current position:Home>[linux] The use of linux development tools

[linux] The use of linux development tools

2022-09-23 09:38:21Make your own life~

给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦!
各种语言的编程题都有,并且很多公司都用这个网站来笔试,赶紧来刷题吧!!!

在这里插入图片描述

一、linux软件管家-yum

1.1 软件包的概念

软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系
在windowWhen we download the software, we can use the software market to download the software,那么在linuxdownload software?
答案是yum
linuxThere are three ways to download software:

1️⃣ 源码安装:将软件源代码进行编译
2️⃣ rpm安装:利用linux内置的安装包安装:类型安卓的apk文件
3️⃣ yum安装: Consider dependencies yourself,Don't need to deal with the people

The first and second installation methods require a large number of other dependent files,而yumlike a software housekeeper.

1.2 yum的使用

1.2.1 查看安装包

指令:yum list
功能:把linuxAll software that can be installed starts withlistway to list

在这里插入图片描述
To use pipe filter
在这里插入图片描述

1.2.2 安装软件

指令:sudo yum install ……
输入sudo yum install figlet后看看效果:
在这里插入图片描述

1.2.3 卸载软件

指令:sudo yum remove ……
Uninstall the software just now:
在这里插入图片描述

二、linux下的编辑器-vim

在这里插入图片描述
vim是linuxA multimodal editing tools,分为三种模式:

1️⃣ 命令模式:这个模式下可以控制光标的移动,可以进行字符的删除,复制,粘贴,替换等命令.正常模式下按i即可进行插入模式
2️⃣ 插入模式:可以做文字的输入,这个模式下与windows下的txt文件编辑没有区别!直接用就行了!按esc即可退出到正常模式
3️⃣ 底行模式:输入冒号进入(即shift+;)可以进行文件的保存,退出,查找等其它指令

指令:vim + 文件名
功能:使用vim打开文件,如果没有该文件,会自己创建

输入iEnter insert mode to write code:

在这里插入图片描述
如果我们要保存退出的话,就需要按escEntering bottom row mode:输入wq即可保存和退出
在这里插入图片描述

2.1 插入模式下的命令

插入模式

按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字

从插入模式切换为命令模式

按「ESC」键

2.2 命令模式下的命令

光标移动:

vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
在这里插入图片描述

按「^」(shift + 6):移动到光标所在行的“行首”
按「$」(shift + 4):移动到光标所在行的“行尾”
在这里插入图片描述
在这里插入图片描述

按[gg]:go to the starting line of text
按「G」(shift + g):移动到文章的最后
在这里插入图片描述
在这里插入图片描述

按「b」:光标回到上个字的开头
按「w」:光标跳到下个字的开头
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文本操作:

「p」:将缓冲区内的字符贴到光标所在位置.注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能
「yy」:复制光标所在行到缓冲区
「nyy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字
「np」:粘贴n行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作.按多次“u”可以执行多次撤销
「ctrl + r」: 撤销的恢复
在这里插入图片描述
在这里插入图片描述

「dd」:删除光标所在行
「dd + p」:剪切功能
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

「shift + ~」:大写变小写,小写变大写,Press and hold to replace until the end of the line
在这里插入图片描述

「x」:每按一次,从左往右删
「nx」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
在这里插入图片描述
在这里插入图片描述

「X」:大写的X,每按一次,从右向左删
「nX」:例如,「20X」表示删除光标所在位置的“前面”20个字符
在这里插入图片描述
在这里插入图片描述

「r」:替换光标所在处的字符
「nr」:替换n个字符
「R」:替换光标所到之处的字符,直到按下「ESC」键为止
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 底行模式的命令

「set nu」: 在文件中的每一行前面列出行号.
「set nonu」:关闭行号
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

「vs + 文件名」:多文件操作
「ctrl + ww」: make cursor jump
在这里插入图片描述
So you can copy the contents of a file/cut to another file(「dd + p」)

:wqto exit split screen

2.4 vim的配置

我们知道,我们要显示行号需要手动输入set nu,每次进入都需要手动设置
那么,Can we just enter the file without instructions,自动显示行号呢?
配置方法:in a folder in your home directory新建一个.vimrc(/etc目录下)
Just write the command in the new file.
Recommended Instructions(一键配置):

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

补充一点:any configuration will only change itself,Does not affect other users

三、linux下的编译器-gcc/g++

gcc是一款可以编译c语言代码的编译器,如果想编译c++代码可以使用g++
先写一个测试程序:
在这里插入图片描述
指令:gcc + 文件
在这里插入图片描述
运行方法是:

./xxxx

在这里插入图片描述
Of course, you can also compile with absolute path
在这里插入图片描述

在学习gcc选项之前,我们先回顾一下c程序的编译过程

预处理:去注释,展开宏,头文件
编译:生成汇编代码
汇编:生成机器二进制代码
链接:通过链接函数和其它第三方库,生成可执行程序或库文件

3.1 预处理

预处理过程:

gcc -E test.c -o test.i

说明一下,gcc的 -o 选项可以把输出放在特定的文件,不用-oWill all displayed
在这里插入图片描述
在这里插入图片描述

3.2 编译

编译过程:

生成汇编语言,这个过程会检查语法是否有错误

gcc -S test.i -o test.s

I can alsotest.c 开始编译.
在这里插入图片描述

3.3 汇编

汇编过程,生成机器代码(乱码),生成可重定向目标文件,不能直接执行

gcc -c test.s -o test.o

在这里插入图片描述

3.4 链接

我们还需要最后一步链接过程:链接

gcc test.o -o test

在这里插入图片描述

3.4 函数库

在linux中有两种库:

动态库:.so(windows是.dll)
静态库:.a(windows是.lib)

And the process of linking is to write yourselfcPrograms and third-party libraries are linked.
So what is the difference between static linking and dynamic linking??

A static library is to import all the code of the library file into the program we want to compile
Dynamic libraries don't do this,而是在程序执行时再进行库链接

静态库占用内存很大,动态库占用内存小,可以节省系统开销

在这里插入图片描述
If you want to use static linking:

gcc test.c -o test -static

在这里插入图片描述

3.5 g++

首先要知道g++也能编译c语言

创建c++文件:

touch test.cpp

编译c++:

g++ test.cpp -o cpp

在这里插入图片描述

四、linux调试器-gdb

在vsIt will be easy for us to debug,但是gdb会比较麻烦.
如果要调试时,We have to make it generate debug information at compile time(-g)(debug信息)

gcc testgdb.c -o testgdb -g

进入方法:

gdb xxx(可执行程序)

在这里插入图片描述
If you want to exit the input:

quit或者ctrl + d

常用命令:

list/l 行号:接着上次的位置往下列,default column every time10行

在这里插入图片描述

Here is not from the first line shows,我们可以l + 1
在这里插入图片描述

b(breakpoint): 设置断点
disable: 禁用断点
enable: 启用断点
d(delete) x :删除序号为x的断点,(不带x会删除所有断点)
r(run): 运行程序(到断点处)
n(next): 单条执行(window中的F10)
s(step): 单条(会进入函数)(window中的F11)
info b: 查看断点情况

在这里插入图片描述
在这里插入图片描述
What if we want to see the value in it??

display: 跟踪查看一个变量
undisplay: 取消跟踪

在这里插入图片描述
可以看到displayThe displayed value is displayed every time,If we only want to show it once:

p(大小写都可以) + 变量

在这里插入图片描述

When we are sure that there is no problem with this function,We can jump directly out of the function:

finish: 执行到当前函数返回(跳过函数)

在这里插入图片描述
If there is a breakpoint at the function,There is a breakpoint below the function,After we enter the function, we want to jump directly to the next breakpoint:

continuing: jump to next breakpoint

And if inside a function we want to skip a piece of code:

until + 行数: 跳到指定行

五、linuxUnder Project Automation Build Tools-make/Makefile

首先要知道make是一个指令,Makefile是一个文件.
Together they form an executable program.

通常在一个大型项目中,通常需要编译大量的源文件,我们又不可能一条一条的用gcc编译我们的makefile就可以实现一次性编译,Just set the corresponding file依赖关系即可.

什么是依赖关系呢?
gcc test.c test
其中test就依赖于test.c

We first create a new file named under the current project folderMakefile的文件,对其进行编辑
格式:

可执行程序:依赖文件
gcc 文件 -o 程序

在这里插入图片描述
在这里插入图片描述
Project cleanup function:
在这里插入图片描述

在这里插入图片描述
make和clean对应VS中的生成解决方案清理解决方案

5.1 Makefile的细节

我们发现我们使用makeno need to add anything after,而clean得make clean,这是为什么?

make扫描makefile文件的时候,Only one target dependency is generated by default,一般是第一个.
所以We usually put the step of generating an executable program first,再往下解决依赖问题

.PHONY又是什么呢?

.PHONY修饰对应的符号(伪目标)总是可执行.

在这里插入图片描述
可以看到make只能执行一次,而cleanalways executable.

5.2 Makefile中的特殊符号

在这里插入图片描述

[email protected] 表示依赖关系中的目标文件(冒号左边)
$^ 表示文件列表(冒号右边)

The symbol will replace itself,same as shown above.



纸上得来终觉浅,绝知此事要躬行.来刷题巩固吧

copyright notice
author[Make your own life~],Please bring the original link to reprint, thank you.
https://en.cdmana.com/2022/266/202209230925467771.html

Random recommended