除了vim, 还有哪些常用的牛逼的编辑器。 自行查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器,为什么调试的时候需要编译选项中添加 -g在Linux下实现进度条程序

除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点。

首先先有一个概念IDE(集成开发环境),厉害的有vs等等。vim以及Emacs就向着这个方向发展。为了实现其强大功能。vim有了多模式编辑有(normal,insert,visual)而emacs则是选择了复杂的快捷键。一般来说vim用户居多,因为vim是内置的,所以更容易被接受。
默认的配置一般是不能满足人们的要求的,所以得自己配置。
实现 IDE 的功能,这些配置通常包括了项目结构列表,文件结构列表,自动跳转,自动提示和补全,插件管理,语法检查,版本控制等插件。
两个都是编辑器,扩展性都很强。
emacs和vim比起来,编辑效率低下。emacs强调统一的环境,便于编程,里面包含了源代码管理,邮件收发等,最重要的是所谓与gbd出自一家,兼容性好。nano只是一个类似emacs的简单编译器,linux下有很多文本编辑器,其中系统(不管哪个分支)都会自带nano,但nano功能很少。
Emacs = Esc + Meta + Alt + Ctrl + Shift

自行查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).

1、Vim
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
2、Eclipse
Eclipse是一款很酷的开源代码编辑器,它拥有代码高亮和智能提示等强大的功能。在Eclipse中,完全胜任以下编程语言的工作——Python, R, Ruby, JavaScript, Natural,Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是Java集成开发环境,甚至提供了对Java 8的支持。在一些Web开发IDE特性的帮助下,你可以非常方便地对代码文件进行组织和访问。
3.Brackets
Brackets也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你不会被任何事情所打断。比如在写HTML代码时,即便你没有保存代码也可以及时预览你的Web页面效果。你也可以使用Theseus来检查变量,Brackets默认提供一种主题,当然你也可以在扩展中心获取更多的主题。
4.Emacs
Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。Emacs不仅可以作为文本编辑器,还可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能
5.Light Table
LightTable是一个免费开放源代码的编辑器,该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。使用Light
Table,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。
6.Chocolat
Chocolat本身是Mac OS
X的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。
7.Sublime Text
一个紧凑但性能较高的代码编辑器一个跨平台的代码编辑器,适用于所有WordPress项目。 Sublime Text有很多功能可以提供:
·脚本编程  ·自定义界面  ·常规文件切换  ·合成和错误检测  ·多媒体选择和编辑 ·外部插件集成 ·Themes

为什么调试的时候需要编译选项中添加 -g.

默认编译生成的可执行文件是无法使用 gdb 来跟踪或调试的,因为可执行程序中没有可供 gdb 调试使用的特殊信息,为了将必要的调试信息整合到可执行文件中,我们便需要用到 -g 选项,这样生成的可执行程序,倘若出现问题,便可以使用 gdb 找出问题具体出现的位置,便于问题的解决。
如下

#gcc -g test.c

“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。
加上-g选项以后,gcc在编译是会做以下额外的操作:
1.创建符号表,符号表包含了程序中使用的变量名称的列表。
2.关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。

调研readelf命令.

readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
ELF(Executable and Linking Format)是一个定义了目标文件内部信息如何组成和组织的文件格式。内核会根据这些信息加载可执行文件,内核根据这些信息可以知道从文件哪里获取代码,从哪里获取初始化数据,在哪里应该加载共享库,等信息。
ELF文件有下面三种类型:
1.目标文件

$ gcc -c test.c

得到的test.o就是目标文件,目标文件通过链接可生成可执行文件。
静态库其实也算目标文件,静态库是通过ar命令将目标打包为.a文件。
如:ar crv libtest.a test.o
2.可执行文件

$gcc -o test test.c 

得到的test文件就是可执行的二进制文件。
3.共享库

$ gcc test.c -fPIC -shared -o libtest.so 

得到的文件listtest.so就是共享库。
可以通过readelf来区分上面三种类型的ELF文件,每种类型文件的头部信息是不一样的。

在Linux下实现进度条程序. 通过makefile进行编译. 建议自主完成一个彩色的进度条.

首先创建一个pro_bar_color.c的文件,编写c语言代码如下:
在这里插入图片描述
再创建一个makefile文件:
在这里插入图片描述
当执行make命令时,就会得到pro_bar_color文件,然后用./去执行它,就会得到彩色的进度条了:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39487033/article/details/82799812