| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 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 编辑器 —— vimvim: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 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 3:22:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |