Linux开发工具

在Linux中安装软件

在centos7中

✳️a.源码安装
b.rpm包安装–➡️不帮你解决依赖关系(当你下qq的时候,它只会下个qq,qq下好后需要什么它不会解决,要你自己去找来下)
c.yum安装–➡️不用编译源码、不用解决软件的依赖关系
(✳️如果我要知道安装什么软件,用yum很简单

	✳️我们要安装别人的软件:
	a.需要别人先把代码给我编译成可执行程序
	b.需要有人将编好的软件,放在用户能下载的地方(官网,应用软件市场)
	✳️应用市场app为例:应用市场是客户端,不是服务器;公司的服务器中有个应用市场服务器给用户提供下载功能;
又如Linux机器,有Linux服务器,常见的Linux工具/软件部署在服务器,则我们客户端又有个软件yum(相当于应用市场app)
	✳️ 那yum怎么知道到哪里去下载呢?所以yum会去特定路径下中的目录下去寻找链接进而去下载
	✳️a.不是所有同学Linux上面的yum源都是国内的链接
		b.如果你不是国内的,或者安装软件特别慢,建议同学们更新yum源
		c.可以网上搜索centos7yum源下载命令
		d.更新yum源(做任何配置),绝对不要先删除,而是一定要先备份(“cp命令”),稳定之后便可以删除了)

yum内容

yum list | grep ➕软件名字 【查看软件包】

yum install ➕某软件【下载命令】

#yum install -y lrzsz.x86_64-----➡️若想将windos下的东西传到Linux下,直接拖拽到xhsell(最好先切到自己工作目录下再拖拽到xshell)
#yum install -y epel-release—➡️安装一下扩展源(准官方服务器列表 )
#yum install -y vim

yum remove ➕某软件【卸载软件】

vim内容

vim概念

✳️vim是一个编辑器:a.只能用来写代码
b.功能强大(多模式编辑器)

✳️为什么要学vim?a.不值得边边角角都搞清楚,但是吧vim常见工能使用非常值得
b.有时候是需要我们在生产环境下需要我们快速的定位问题,需要我们快速的修改代码!(如果懂是个如虎添翼的工具)

vim的使用

第一阶段

✳️打开的时候默认的是写作模式
✳️想退出:shift ➕:----➡️便到了底行模式,再按q(wq保存退出)
✳️进去之后如果我想写代码的话就按 i----➡️便到了inser模式,便可以在里面敲代码了;若想退出了就按esc—➡️便到了normal模式,再按shift➕:便进入到了底行,再wq(保存并退出);

✳️:a.默认进去是normal(命令模式),然后shift➕:进入底行模式;
b.想从命令模式到插入模式,直接输入 i;
c.想从插入模式回到命令模式,按esc,紧接着再按shift➕:到了底行模式;
d.若想从底行模式到命令模式,按esc,便回到了命令模式;
e.若想从底行模式到插入模式,没办法只能先按esc回到命令模式,再按i到插入模式

第二阶段

✳️命令模式下的文本批量化操作:
1.复制某一行💋:光标所在行按yy;也可以光标所在行 n➕yy(复制光标及以下n行)
2.粘贴💋:光标所在行p ;也可以 n➕p(粘贴n行)
3.剪切💋:光标所在行dd(再粘贴操作);也可以n➕dd(剪切光标及以下n行);当然剪切也可以当作删除行来操作!
4.撤销💋:u(撤销刚刚的操作);若后悔了想将刚刚的撤销给撤销掉按ctrl➕r(针对u操作进行撤销)
5.光标定位到文本末尾💋:shift➕g
6.光标快速将光标定位到文本最开始💋:gg
7.光标快速定位到指定的某行💋:n➕shift➕g
8.光标定位到某行的结尾💋:shift ➕4($)
9.光标快速定位到文本行的开始💋:shift ➕ 6(^)
10.光标以单词为单位向后移动💋:w
11.光标以单词为单位向前移动💋:b
12.除了上下左右键移动光标;也可以 h j k l ➡️左 下 上 右
(h在最左边就是左移动;l在最右边就是右移动)
(king国王是高高在上的所以k向上移动;jump向下跳,j向下移动)
13.对内容大小写快速切换💋:shift➕~(在esc下面)
14.替换光标所在字符💋:先按r➕你想替换的字符;n➕r➕你想替换的字符(替换光标之后的n个字符)
15.想在这行我输入的内容覆盖式的替换这行的内容💋:shift➕r—➡️到了replace模式,然后你输入内容就会直接覆盖已有的内容
16删除光标所指向的内容💋:x(按一下x就删一个字符);n➕x(可以删除光标之后的n个字符)请添加图片描述

vim的配置

vim配置网址

gcc/g++编译

✳️g++可以用来编译C语言,但gcc不能用来编译C++;

程序编译过程

✳️是从程序(文本)----➡️机器语言(二进制)【因为计算机只认识二进制,也是因为计算机的硬件只能认识二进制】

✳️gcc test.c -o mytest-----➡️一步到位,直接编译成了可执行程序mytest;

✳️
1.预处理:a.宏替换;b.头文件展开;c.去注释;d.条件编译
🌟gcc -E test.c -o test.i 【只完成预处理阶段,形成test.i文件】
-E:从现在开始给我进行程序的翻译,当预处理完成,就停下来!
若不加-o 则会默认在显示器将显示预处理后的内容,所以若加-o指明生成test.i文件

🌟头文件展开:我们一般安装的C/C++头文件都被放在了usr/include 路径下
🌟编译器内部都必须通过一定方式,知道你包含头文件所在路径,gcc他自己默认有自己的搜索方式(比如安装VS也安装了库,VS肯定知道安装的库的路径!)

❓请问预处理完后还是C语言吗?----➡️是!只不过比较干净!

2.编译 :将C语言翻译称为汇编语言
🌟gcc -S test.i -o test.s
-S:从现在开始程序的翻译,当我们编译完成之后就停下来

3.汇编:将汇编语言翻译成为可重定位二进制文件.o/.obj文件
🌟gcc -c test.s -o test.o
-c:从现在开始程序的翻译,当我们汇编结束之后就停下来
🌟依旧是一个不可以执行的文件,因为test.o中的一些符号没有被和系统关联起来,有哪些符号呢?(所有包含头文件的操作,本质上是因为想使用头文件中所声明的方法!)我们调用一个方法,那么这个方法一定有自己的实现,而你编译形成后的test.o只编译你写的代码,你的代码和C语言printf之间,存在两个问题:❓我的代码中需要的printf在哪里?
❓我代码中使用了printf,如何与目标printf的实现产生关联(链接)?
我们的头文件在usr/include路径下,可是光有头文件能不能让我们把代码写出来呢?答案是:不能。我们还需要头文件所形成的库(我们把C/C++写出来一直都在用库,我们经常用的printf在C标准库中,C标准库在哪儿?在lib64/libc中)我们所有实现都在C库里,所以我们编译所形成的可执行文件test.o,只会把我们自己写的循环,自己写的语句,自己写的函数(没有调用C/C++给我们提供的函数)编译出来,但凡我们使用了C/C++的函数就需要我们代码中的printf和库中的printf实现关联起来(需要链接过程),这样之后才能形成可执行程序。

4.链接:gcc自己会在系统特定路径下帮我搜索我们所需要使用的库,就如同搜索头文件一般
🌟gcc test.o -o mytest—➡️便形成可执行程序mytest
🌟隐含的就是链接我们自己的程序和库,形成可执行程序;#ldd mytes命令t便可以查看我们所依赖的库!请添加图片描述请添加图片描述

动/静态库感性认识

✳️头文件:给我们提供了可以使用的方法,所有的开发环境,具有语法提示,本质是通过头文件帮我们搜索的
库文件:给我们提供了可以使用的方法的实现,以供链接,形成我们的可执行程序

✳️动态库:Linux(.so) windows(.dll)–➡️动态链接
感性认识:我们打游戏的时候已经知道电竞馆在哪里了,老板给我们机器号40号,相当于我们知道了位置了,当我们需要执行的时候,便跳转过去;
✳️动态链接:我自己编我自己的程序,库是你的库,对我而言只需要在链接的时候把我需要的方法和库当中的位置通过地址的方式关联起来,便叫做动态链接;换句话学校有上百名学生想去上网吧,网吧相当于共享的库,一旦想上网就过去了,相当于就动态链接了
✳️优点:大家共享一个库,可以节省资源(不存在重复代码,如磁盘,内存资源)
缺点:一旦库缺失会导致所有的程序失效

✳️静态库:Linux(.a) windows(.lib)–➡️静态链接
自己有手机电脑,我想打的时候并不需到网吧,只要上自己的就行了,我们称之为静态链接,相当于我们把库当中的方法拷贝到自己可执行程序里;将来系统中存在10个程序,若都调用printf,则每个程序都要把库当中实现方法给自己拷贝一份便叫做静态链接
✳️ 优点:不依赖任何库,程序可以独立执行
缺点:浪费资源(成败上千份重复代码,我们的磁盘,内存资源被大量占用)

gcc中动/静态体现

✳️默认情况下形成的可执行程序是动态链接的!
✳️若想进行静态链接:#gcc test.c -o mytest2 -static----➡️便是静态链接了,其文件体积十分庞大;
✳️更推荐动态链接;默认一般而言,都没有自带静态库

gdb的使用 (面试有可能还会被问)

✳️默认形成的可执行程序,无法调试!(release版本)
✳️#gcc hello.c -o hello_g -g----➡️便形成了hello_g的程序;➕_g告诉我们要以debug的方式发布;以debug发布的程序体积稍大一点(给我们加了调试信息);

✳️操作大全,
1.显示代码💋:l;l main(则会显示main函数)
2.打断点💋:b ➕n(在第n行打断点,还会提示断点编号)
3.查看自己打的断点💋:info b
4. 删除断点💋: d(delete)➕(你想删除断点)编号
5. 直接运行到另一个断点:c
6.代码跑起来💋:r
7.逐语句执行(f11)💋:s(step简称)
8.逐过程(f10)💋:n(next简称)
9.查看变量的内容💋:p ➕变量名
10.查看堆栈💋:bt
11.长显示想监视的变量💋:display ➕你想监视的变量(则会每一步都会显示你想监视的变量)
12.不想长显示了💋:undisplay ➕变量的编号
13.不想在循环里面执行了想跳到下面的代码执行💋:until ➕n(你想跳转到下面的第几行)
14.执行完一个函数就停下来💋:finish

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值