Linux开发工具
一、调研除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.
Vim是从vi发展出来的一个文本编辑器。代码补全、编译即错误跳转等 方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
Emacs:
Emacs与vim比起来,编辑效率低下。Emacs强调统一的环境,便于编程,里面包含了源代码管理,邮件收发等,最重要的是所谓与gbd出自一家,兼容性好。
Nano:
nano只是一个类似emacs的简单编译器,linux下有很多文本编辑器,其中系统(不管哪个分支)都会自带nano,但nano功能很少。
Eclipse:
Eclipse是一款很酷的开源代码编辑器,它拥有代码高亮和智能提示等强大的功能。在Eclipse中,完全胜任以下编程语言的工作——Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme,Clojure, Groovy等等,它也是Java集成开发环境,甚至提供了对Java 8的支持。在一些Web开发IDE特性的帮助下,你可以非常方便地对代码文件进行组织和访问。
二、调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).
简单讲,编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) →预处理器 (preprocessor) →编译器 (compiler) →目标代码 (object code) →链接器 (Linker) →可执行程序 (executables)
Visual C++:
VC++6.0对标准化C++的兼容仅达83.43%。
它是VisualStudio、VisualStudio.net 2002、VisualStudio.net 2003、VisualStudio.net 2005的后台C++编译器。随着Stanley Lippman等编译器设计大师的加盟,它变得非常成熟可靠了。Visual C++7.1对标准C++的兼容性达到98.22%。
Borland C++:
该编译器以速度快、空间效率高而著称。它的5.5版本对标准化C++的支持达92.73%,而官方称100%符合ANSI/ISO的C++标准和C99标准。
它是Borland公司开发的,是Borland C++ Builder和Borland C++ Builder X这两种IDE的后台编译器。
g++:
g++是一个开源的C++编译器,GCC3.3对标准化C++的支持达96.15%。
值得一提的是,gcc是gnu c的编译器, g++是gnu c++的编译器, 而egcs(Enhanced GNU Compiler Suite)可以认为是gcc的改进版。目前gcc已经改名,从原来代表GNUC Compiler改变为代表GNU Compiler Collection。而MinGW或Cgywin,是在windows平台上的gnu c/c++编译器,以及库文件,运行环境的集合。
三、为什么调试的时候需要编译选项中添加 -g. 同学们自行调研readelf命令.
gcc 选项-g 生成调试信息。GUN调试器可利用该信息
用gdb进行调试纠错前必须要在编译选项中添加“-g”,“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示哪些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。这个程序和objdump提供的功能相似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件),所以即使BFD库有什么bug存在的话也不会影响到readelf程序。运行readelf时,除了-v和-H之外,其他的选项必须有一个被指定。
命令参数:
<1> -h 或者–file-header。显示在elf文件头里包含的所有信息。
<2> -l 显示程序头表信息, 包括有几个段,每个段的属性,以及每个段中包含有哪几个节
<3> -S 显示节区表内所有的信息,包括每个节的属性
<4> -h 显示所有头的信息,包括elf文件头,程序头和节头,即“-l,-h,-S”的组合。
<5> -s 显示符号表的信息,包含静态符号表和动态符号表。如果指关心动态符号表,可以直接用“-d”。
<6> -r 显示所有定位入口的信息。
四、Liunx下实现进度条
进度条代码:
执行结果: