Linux开发工具

1. 自行查找资料, 调研除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.

vim  

    vim 是从vi发张出来的一个文本编辑器,代码补全,编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的编辑器

eclipse
    eclipse是一款开源代码编辑器,它拥有代码高亮和智能提示等强大的功能,在eclipse中,完全胜任一下编程语言的工作
--Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是Java集成开发环境,甚至提供了对Java 8的支持。在一些Web开发IDE特性的帮助下,你可以非常方便地对代码文件进行组织和访问。

Brackets
  Brackets也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你不会被任何事情所打断。比如在写HTML代码时,即便你没有保存代码也可以及时预览你的Web页面效果。你也可以使用Theseus来检查变量,Brackets默认提供一种主题,当然你也可以在扩展中心获取更多的主题。

Emacs
    Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。Emacs不仅可以作为文本编辑器,还可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能

Light Table

   Light Table是一个免费开放源代码的编辑器,该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。使用Light Table,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。

Chocolat

   Chocolat本身是Mac OS X的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。

Sublime Text

   一个紧凑但性能较高的代码编辑器一个跨平台的代码编辑器,适用于所有WordPress项目。
   Sublime Text有很多功能可以提供:
·脚本编程  ·自定义界面  ·常规文件切换  ·合成和错误检测  ·多媒体选择和编辑   ·外部插件集成   ·Themes

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

MSVC

         Windows平台上最常用的编译器,在C++编译器圣战中的胜利者,一个常被人诟病的是对标准的支持不够新不够快(最近开始逐步加快了)。随着微软发布基于Clang / C2,这一条路以后若成功,MSVC与Clang / C2并行,甚至逐步逐步退出舞台,都是有可能的事情。

Clang

         重点介绍。licence极度友好,代码质量非常棒,采用的IR为LLVM IR非常优秀,各大公司逐步发力在Clang上,包括不限于微软,IBM,Nvidia等,各大公司也在开始疯狂的往Clang / LLVM交代码(圈地),也开始往Clang实现OpenMP,Nvidia GPU等支持,目前在赶超GCC的道路上一路激情的狂奔,前途一片光明。但是Clang依赖于的LLVM,目前的性能无法与GCC相提辩论,在Benchmark性能测试上几乎没有胜利的项目,优化的道路上任重道远,同时一些开源软件没有办法编译过去,主要是缺乏对GCC 一些Builtin函数、自身带的汇编器的孱弱导致

GCC/G++

        跨体系结构很多,很多开源软件默认编译器都是GCC/G++,这一点上Clang比不上。

ICC

        没有自己专门的前端(传说中的外包),而且是针对Intel体系结构上专门优化。

IBM XL C++

        在IBM特定硬件与平台上表现非常牛逼,Benchmark性能测试非常优秀,其最初的设计思想就是为了性能,其最高优化级别可以达到O5,带来的缺点则是在编译时间上往往过长。而另外一个常被人诟病的是对C++标准的支持、开源软件的支持、错误信息的提示上都不够友好,然而从13.2开始,随着IBM采用Clang融合方案,目前这几项都得到有效改良,然而融合的道路也必定是漫长的,以前的历史包袱等也需要背上。

3. 为什么调试的时候需要编译选项中添加 -g. 同学们自行调研readelf命令.

       用gdb进行调试纠错前必须要在编译选项中添加“-g”,“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器  调试的时候需要编译选项中添加 -g. 加选项-g是为了能够调试。不加可以运行,但不能调试

 

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 显示所有定位入口的信息。
4. 在Linux下实现进度条程序. 通过makefile进行编译. 建议自主完成一个彩色的进度条.

1.建一个Makefile文件

2.vim Makefile

test:test.c                                                                                                
  gcc -o test test.c                                                                                      
.PHONY:clean                                                                                               
clean:                                                                                                     
  rm -f test       

 

3.建test.c文件

vim test.c

#include <stdio.h>                                                                                         
#include <unistd.h>                                                                                        
#include<string.h>                                                                                         
int main()                                                                                                 
{
                                                                                                              
    int i = 0;                                                                                             
    char bar[101];                                                                                         
    const char *lable = "|/-\\";                                                                           
    for(i=0;i<=100;i++)                                                                                    
    {
                                                                                                              
        bar[i]='\0';                                                                                       
        printf("\033[1;31;44m%s\033[0m [%d%%][%c]\r",bar,i,lable[i%4]);                                    
        fflush(stdout);                                                                                    
        bar[i]='#';                                                                                        
        usleep(100000);                                                                                    
    }                                                                                                      
    printf("\n");                                                                                          
    return 0;                                                                                              
}                                                                                                          

 4.   make后 ./test 生成彩色进度条

5. 同学们自行调研Linux下软件安装的几种方式(源码安装, rpm安装, yum安装). 重点要理解rpm安装和yum安装的区别.

(1)yum安装可以看成是从网络在线安装的一种方式,只需要yum install 软件名,系统就自动根据yum源配置文件中的镜像位置去下载安装包了,并可以自动分析所需的软件依赖关系,自动安装所需的依赖软件包。此方式适合初学者,简单方便,不用考虑依赖关系。但有些软件并不能通过yum来安装。 
(2)而源码安装方式是需要自己到网上下载源码包,然后解压安装。此方式可以指定配置参数,更加灵活方便,兼容性更强。比较适合对Linux系统有较多了解的进阶用户使用。 
(3)rpm是安装本地存在的rpm包,如果存在依赖也需要安装上,如果某个rpm是自己修改编译的,那么只能用rpm安装了
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值