1.Linux有哪些编辑命令及其优缺点?

vi:
vi编辑器是Linux最基本的功能强大的文本编辑器,工作在字符模式下,不需要图形界面,没有菜单,只有命令,且命令繁多,但在系统和服务器管理中的功能很强大。
vi的三种基本工作模式:命令行模式、文本输入模式和末行模式。
优点:效率高
缺点:命令繁杂
详细命令说明见http://man.linuxde.net/vi

vim:
vim是在vi的基础上改进的,并增加了好多特性的功能强大,高度可定制的文本编辑器;代码补全、编译及错误跳转等方便编程的功能特别丰富。
vim的三种基本工作模式:命令模式、插入模式、普通模式
优点:命令灵活组合使用,高效;可以完成复杂的编辑与格式化功能。
缺点:初次使用比较难,对于普通编辑器而言操作复杂。
详细命令说明见https://www.cnblogs.com/YuanYe1/p/5241232.html

nano:
体积小巧而功能强大,字符终端的文本编辑器。可以打开指定文件进行编辑,自动对文件进行断行(加 -w 可避免)。
优点:简单,适合初学者。
缺点:自动换行用于Linux下的长命令有时会使系统失灵。
详细命令说明见http://man.linuxde.net/nano

sed:
sed是一种流编辑器,主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。它在文本处理中能够完美的配合正则表达式使用。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
优点:简单
缺点:对列处理功能相对差点
详细命令说明见 http://man.linuxde.net/sed

pico:
pico是功能强大全屏幕,以显示导向为主的文本编辑器,它伴随着处理电子邮件和新闻组的程序pine而来。pico的基本功能包括文本输入,文本搜索,拼写检查,文件浏览,文本拷贝、剪切和粘贴。
优点:简单易用
缺点:pico并不具备字处理 程序中常见的增强功能
详细命令说明见http://man.linuxde.net/pico

emacs:
Emacs是一种功能超强的文本处理程序,或者文本编辑器,可视为伪编辑器的操作系统。C语言构成了emacs的底层,包括Emacs Lisp的解释器。而Emacs Lisp则是负责了Emacs Lisp的建筑物上层,包括扩展、界面等。
Emacs的三种基本对象是:帧(frame)、窗口(window)、缓冲区(buffer)。
优点:有足够的扩展
缺点:emacs没默认快捷键的命令
详细命令说明见http://man.linuxde.net/emacs

jed:
jed命令用于编辑文本文件;主要用用途是编辑程序的源代码,支持彩色语法加亮显示。
详细命令说明见http://man.linuxde.net/jed

joe:
joe是一个功能强大的全屏幕文本编辑程序。操作的复杂度要比Pico高一点,但是功能较为齐全。Joe一次可开启多个文件,每个文件各放在一个编辑区内,并可在文件之间执行剪贴的动作。
详细命令说明见http://man.linuxde.net/joe

ed:
ed命令用于文本编辑,是Linux中功能最简单的文本编辑程序,一次仅能编辑一行而非全屏幕方式的操作。对于编辑大文件或对于在shell脚本程序中进行文本编辑很有用。
详细命令说明见http://man.linuxde.net/ed

ex:
ex是在ex模式下启动vim文本编辑器,ex的执行效果和vi -E雷同,如要从Ex模式回到普通模式,则在vim中输入:vi或:visual即可。
详细命令说明见http://man.linuxde.net/ex

2.Linux下的编译器有哪些?

GCC和G++:编译步骤:(以binary.c/binary.cpp为例)

1.预处理,生成 .i 文件;
命令:GCC —>gcc -E binary.c -o binary.i
G++—>g++ -E binary.cpp > binary.i
预处理的具体做法:头文件的包含;注释的删除;#define标识符的替换和删除;宏定义的替换,最后生成test.i文件。

-E:只进行预处理,产生预处理后的结果到标准输出

2.编译,生成 .s 文件;
命令:GCC —>gcc -S binary.i -o binary.s
G++—>g++ -S binary.cpp
编译阶段的具体做法:生成汇编代码;语义分析;语法分析;符合汇总,最后生成test.s文件。

-S:只进行预处理和编译,生成.s文件

3.汇编,生成 .o 文件;
命令:GCC —>gcc -c binary.s -o binary.o
G++—>g++ -c binary.cpp
汇编阶段的具体做法:将汇编代码转化成二进制代码,最后生成test.o文件。

-c:只进行预处理、编译和汇编,生成.o文件

4.链接,生成可执行程序;
命令:GCC —>gcc binary.o -o binary(可以输出到指定的文件)
G++—>g++ binary.o -o binary
链接阶段的具体做法:将.o文件与所需的库文件链接整合形成可执行文件。

-o:指定目标名称,常与-c、-S同时使用,默认是.out

gcc -Wall binary.c -o binary :发现程序中的警告。

GCC和G++的区别和联系:
1>.GCC会将 .c 后缀文件当作c程序,G++将 .c 后缀文件当c++程序;对于.cpp后缀文件GCC和G++都会将其当作c++文件。
2>.编译阶段:G++编译c程序时会调用GCC;对于c++代码,GCC和G++是等价的。
3>.c++代码链接阶段是G++或gcc -lstdc++完成的。

3.Linux的调试器?

GDB

vim binary.c
gcc -g binary.c   //生成a.out文件
gdb a.out   //接下来就可以使用命令对程序进行调试

常用命令:

l 行号:显示a.out文件,也就是二进制文件源代码,默认每次10行;
l 函数名:显示指定函数的源代码;
r:运行程序;
quit:停止调试;
n:单条执行;
s:进入函数调用;
b 行号:在指定行设置断点;
break 函数名:在指定函数开头设置断点;
info break:查看断点的信息;
finish:执行到当前函数返回,然后停下来等待命令;
p:打印表达式的值;
p 变量:打印变量的值;
set val:修改变量的值;
c:从当前位置开始连续而非单步执行程序;
delete breakpoints:删除所有断点,加上n是删除序号为n的断点;
disable(enable) breakpoints:禁用(启用)断点;
info breakpoints:查看当前设置了哪些断点;
display 变量名:跟踪查看一个变量,每次停下来都显示变量的值;
undisplay:取消对之前变量的跟踪;
until 行号:调到指定行;
breaktrace(bt):查看各级函数调用及参数;
info locals:查看当前栈帧局部变量的值;

注:以上有的是从网上搜集的,有问题的话请联系,谢谢。

Linux开发工具--(编辑器,编译器,调试器)相关推荐

  1. <Linux开发>linux开发工具- 之-geany编辑器

    <Linux开发>linux开发工具- 之-geany编辑器 安装命令: sudo apt-get install geany 使用方法: 命令: geany 文件路径名 &

  2. Linux开发工具实现C/C++编程

    Linux开发工具实现C/C++编程 文章目录 Linux开发工具实现C/C++编程 1.软件包管理器:yum 如何安装软件 如何卸载软件 2.编辑器:vim 1.常见的三种模式: 2.正常模式下的快 ...

  3. Linux开发工具详解

    目录 前言 一.Linux编辑器-vim使用 1.vim的基本概念 2.vim命令模式命令集 3.vim底行模式命令集 4.简单的vim配置 二.Linux编译器-gcc/g++使用 1.背景知识 2 ...

  4. Linux——开发工具

    开发工具 C编译器 大多数的Linux工具,以及很多Linux应用软件,都是用C或C++写成的.本章主要以C作为例子,但你把这些概念搬到C++上是没问题的. C程序遵照传统的开发流程:写代码.编译代码 ...

  5. 嵌入式 Linux 开发工具篇问题整理//C语言测试(杨辉三角、递归调用实现阶乘、计算器、统计字符串出现次数)//2018.07.12.//

    嵌入式 Linux 开发工具篇问题整理 1. 嵌入式开发与传统开发的区别?(同类问题:单片机开发与嵌入式开发的区别)             是否有无操作系统:     2. 移植操作系统的好处有哪些 ...

  6. Linux开发工具的使用

    1.   Linux开发工具的使用 Vim编译的使用 Gdb调试工具的使用 Makefile的编写 linux跟踪调试 SSH的使用 subversion的使用 1.   Linux开发工具的使用 V ...

  7. 【嵌入式】Linux开发工具arm-linux-gcc安装及使用

    arm-linux-gcc 知识架构及层次 - 程序编译及调试 嵌入式交叉编译器安装配置 主机目标板开发模式 ARM微处理器/Linux系统下编译器 编译器下载及安装 arm-linux-gcc工具使 ...

  8. 基于windows PE文件的恶意代码分析;使用SystemInternal工具与内核调试器研究windows用户空间与内核空间...

    基于windows PE文件的恶意代码分析:使用SystemInternal工具与内核调试器研究windows用户空间与内核空间 ******************** 既然本篇的主角是PE文件,那 ...

  9. 【嵌入式】Linux开发工具make及makefile设计

    make工具及makefile设计 make工具及makefile设计 Makefile 设计示例 Makefile 规则--构成 Makefile 变量(宏) Makefile 条件判断 Makef ...

最新文章

  1. 【Smart_Point】C/C++ 中共享指针 shared_ptr
  2. Android Message解析
  3. Google AutoML最新技术解析:AutoML-Zero,从0构建模型
  4. jQuery中 :first 和 :last 选择器诡异问题
  5. 使用 Cuttlefish 虚拟 Android 设备
  6. python结课报告_Python数据分析课程到底是学什么内容的?
  7. babel原理_手写webpack核心原理,再也不怕面试官问我webpack原理
  8. 【收藏版】长文详解基于并行计算的条件随机场
  9. 在HDFS集群中优化secondary namenode到datanode1节点上,并做重启hdfs集群后,datanode1启动失败...
  10. python 字符串不相等_python实现找出来一个字符串中最长不重复子串
  11. 二维数组最长递增java_动态规划设计之最长递增子序列
  12. 了解开源图表组件FusionChartsFree
  13. 北京大学c语言题库,北大acm题库1002题
  14. 机器学习预测世界杯球队冠
  15. ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置
  16. python代码审查规则_python代码检查
  17. 为你推荐10款开发常用的代码编辑器
  18. new Data()、set Data()、get Data()方法、时间戳转换
  19. 若依框架----登录界面美化
  20. vue+ts全局变量

热门文章

  1. js 递归树根据子节点获取所有父节点
  2. 微信分享接口配置和调用
  3. 查找数组中重复的元素
  4. VC和VS的区别--通俗易懂
  5. 京东API接口:item_get - 获得JD商品详情
  6. decimal 后面的后缀M的意思
  7. 软件测试用例篇(1)-------针对非软件产品进行测试
  8. Linux中vi命令编辑文件时显示行号
  9. 转载 调试器工作原理
  10. PHP与MySQL外文文献译文和原文_计算机外文翻译---基于PHP和MYSQL的网站设计和实现...