Linux 基础开发工具

姓名:张立斐   学号:19020700001   学院:电子工程学院 

转自:https://blog.csdn.net/weixin_39121325/article/details/85781878

【嵌牛导读】Linux 基础开发工具

【嵌牛鼻子】Linux 

【嵌牛提问】Linux 如何使用基础开发工具?

【嵌牛正文】

Linux 软件包管理器 —— yum

软件包的概念

在Linux下安装软件,通常的办法是下载到程序的源代码,并进行编译,得到可执行程序

但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成Windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装

软件包和包管理器,就好比app和应用商店的关系

yum(Yellow dog Update,Modified)是Linux下非常常用的一种包管理器,主要应用在Fedora,RedHat,Centos等发行版上。

使用yum

输入指令yum list,就可看到可以下载的全部软件(列表很长,就不截图了)

安装软件

输入指令 sudo yum install 软件名

yum会自动匹配到你想安装的软件并询问你是否需要下载,这时候按y确认安装,当末尾出现complete时,说明安装完成

实现本地机器和云服务器的文件互传

先安装lrzsz这个软件


安装完后输入指令rz -E可选择可选择需要从本地机器上传的软件


而输入指令sz+文件名可将云服务器上的文件下载到本地机器指定的文件夹中


Linux 编辑器 —— vim

vim:vim是解决在Linux上代码的编写的问题,本质是文本编辑器

特点:多模式的文本编辑器

这里先介绍vim主要的三种模式:命令模式、底行模式、插入模式

vim默认打开的时候所处的模式是命令模式

命令模式切换成插入模式:

i:在当前光标处进入插入模式

a:在当前光标的后一个位置进入插入模式

o:在当前光标处的下一行进入插入模式

vim命令模式命令大全

移动光标

h:左移光标

j:下移光标

k:上移光标

l:右移光标

$:移动到光标所在行的行尾

^:移动到光标所在行的行首

gg:移动到文本开头

G:移动到文章的最后

n+shift+g:移动到第n行行首

w:光标跳到下个字开头

e:光标跳到下个字字尾

b:光标回到上个字开头

nl:光标移到该行的第n个位置

ctrl+b:屏幕往后移动一页

ctrl+f:屏幕往前移动一页

ctrl+u:屏幕往后移动半页

ctrl+d:屏幕往前移动半页

删除文字

x:每按一次,删除光标所在位置的一个字符

nx:删除光标所在位置的后面(包括自己)的n个字符

X:大写的X,每按一次,删除光标所在位置的前面一个字符

nX:删除光标所在位置的前面的n个字符

dd:删除光标所在行

ndd:从光标所在行开始删除n行

复制

yw:将光标所在之处到字尾的字符复制到缓冲区中

nyw:复制n个字到缓冲区

yy:复制光标所在行到缓冲区

nyy:表示拷贝从光标所在的该行往下数的n行内容

p:将缓冲区内的字符贴到光标所在位置。注意:所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能

替换

r:替换光标所在处的字符

R:替换光标所到之处的字符,直到按下Esc键为止

撤销上一次操作

u:若误执行一个命令,可按u撤销该操作,恢复到上一个操作

ctrl + r:撤销的恢复

更改

cw:更改光标所在处的字到字尾处

c#w:表示更改#个字

跳至指定的行

ctrl+g:列出光标所在行的行号

nG:移动光标至文章的第n行行首

vim底行模式命令大全

在使用底行模式之前,请记住按Esc键确定你已处于正常模式,再按:冒号即可进入底行模式

列出行号

set nu:在文章的每一行前面列出行号

跳到文件中的某一行

#:#表示一个数字,在冒号后输入一个数字,再按回车就会跳到该行了

查找字符

/关键字:先按/键,再输入想寻找的字符,如果第一次找的关键字不是你想找的,可以一直按n会往后寻找到你要的关键字为止

?关键字:先按?键,再输入想寻找的字符,如果第一次找的关键字不是你想找的,可以一直按n会往前寻找到你要的关键字为止

保存文件

w:冒号后输入w可将文件保存

离开vim

q:按q就是退出,如果无法离开vim,可以在q后跟一个!强制离开vim

wq:保存并退出

配置vim

这里给大家一个非常方便的脚本,你想在哪个用户下配置vim就在哪个用户下敲这个脚本,按回车就会自动帮你安装啦!

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

功能齐全,亲测有效!

Linux 编译器 —— gcc/g++使用

执行编译的四个步骤(了解就好)

gcc是c的编译器,g++是c++的编译器,两者在执行编译时都会经过以下四个步骤

1.预处理(gcc -E):头文件展开,去注释,宏替换,条件编译

2.编译(-S):c代码编译成汇编

3.汇编(-c):将汇编语言翻译成为目标文件(可重定向目标文件)

4.链接:将汇编过程产生成的二进制代码进行链接

gcc选项

-E:只激活预处理,不生成文件,你需要将它重定向到一个文件中

-S:编译到汇编语言,不进行汇编和链接步骤

-c:编译到目标代码

-o:文件输出到文件,常用gcc 代码文件 -o 输出文件

-g:生成调试信息

-static:此选项对生成的文件采用静态链接

Linux 调试器 —— gdb使用

背景

首先我们要明白,程序发布的方式有两种,debug版本和release版本

debug:程序本身会被加入更多的调试信息,以便于进行调试。

release:不会添加任何的调试信息,不可被调试。

而Linux gcc/g++ 出来的二进制程序,默认时release版本

so,要使用gdb调试,得先转换成debug版本,所以必须在源代码生成二进制程序的时候,加上-g选项。

release转换成debug


可以看到,mytest和mytest_g两者的大小有差别,所以mytest是默认生成的release版本的,mytest_g是debug版本的(因为加入了调试的信息,所以文件会变大)


通过readelf指令和grep过滤后也可以验证我们的观点(readelf命令一般用于查看ELF格式的文件信息),mytest_g就是比mytest多出这些和debug有关的调试信息,所以mytest_g是debug版本的。

总结:Linux默认发布的可执行程序,是动态链接且release方式,可通过-static和-g选项来修改成静态链接和debug版本。

调试


通过gdb mytest_g调试程序 

进入到gdb模式后,可以输入 list/l 指令显示源码(每次列10行,接着上次的位置往下列),或者想从第一行开始显示可以输入 l 1 指令。


通过run指令运行程序,输出结果


打断点:b行号


查看断点:info b

可以看到当前有一个断点在第2行


再打一个断点并查看


删除断点:d num

命令汇总

list /(l 行号):显示源代码,每次列10行,接着上次的位置往下列

list /(l 函数名):列出某个函数的源代码

run/r:运行代码

b 行号:打断点

info b:查看断点

d Num(断点编号):删除断点

p 变量:打印变量值,也可以p &变量打印变量的地址

next/n:逐过程执行

step/s:逐语句执行

display 变量名:跟踪查看一个变量,每进行一步调试都会显示一次它的值

undisplay 跟踪变量名的编号:取消对先前设置的那些变量的跟踪

until x行号:跳至x行(忽略掉那些无效的代码的行)

finish:执行到当前函数的返回,然后停下来等待命令

continue/c:跳转到下一个断点

set var:修改变量的值

disable 断点编号:禁用断点

enable 断点编号:启用断点

bt:查看各级函数调用及参数

quit:退出gdb

————————————————

版权声明:本文为CSDN博主「那就等雨停吧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_52454367/article/details/119393548

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容