Linux---浅谈Linux开发工具

常用的编辑器与编译器

横向对比一些常用的编辑器,例如:Vim ,VS Code , Sublime Text2 ,Atom

  • 配置方面:

    • Vim 的可配置性非常强,各种插件、语法高亮配色方案等多不胜数,但是都需要自己亲手配置.vimrc文件,自由度很高,用户可以自由配置以及想要的功能
    • Sublime Text2 有着语法高亮、代码提示补全、代码折叠、自定义皮肤/配色方案、多便签页等等,且Sublime Text 2 的各种配置均由配置文件控制,完完全全的可以由用户自定义,但最要命的一点是这是一款收费的商用软件,价值好像在59美刀,不过功能的确十分强大
    • VS Code 支持大量的扩展插件,可以说是一个支持三大平台的VS,更适用于Web和前端开发
    • Atom拥有非常精致细腻的界面,并且可配置项丰富,加上它提供了与 SublimeText 上类似的 Package Control (包管理)功能,人们可以非常方便地安装和管理各种插件,并将 Atom 打造成真正适合自己的开发工具。和VS Code一样,更适用于Web开发
  • 性能方面:

    • 目前处于初步阶段的 Atom 在性能上与传统的编辑器还有点差距,在打开大文件时尤为明显,而在一些机器上也容易出现 CPU 占用率过高等问题
    • Sublime Txet2启动速度很快,尤其在了解了一些快捷键之后,使用起来的流畅度会更高
    • VS Code 的启动速度以及打开大型文件的速度都非常迅速流畅,完全不卡,加载大文件几乎秒开,相比 Atom、Sublime Text 等感觉都要优秀!
    • Vim性能很高,几乎不会有卡顿现象,虽然已经是古董级的编辑器,但是仍是广大程序员所热爱的神器,也是检验一个程序员真实水平的工具

    常用的一些编译器:

    • 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融合方案,目前这几项都得到有效改良,然而融合的道路也必定是漫长的,以前的历史包袱等也需要背上。

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

  • 调试的时候需要编译选项中添加 -g. 加选项-g是为了能够调试。不加可以运行,但不能调试。

  • readelf命令:

    用来显示一个或者多个elf格式的目标文件的信息

  • ELF文件作用

ELF文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序),所以可以从不同的角度来看待elf格式的文件:
如果用于编译和链接(可重定位文件),则编译器和链接器将把elf文件看作是节头表描述的节的集合,程序头表可选。
如果用于加载执行(可执行文件),则加载器则将把elf文件看作是程序头表描述的段的集合,一个段可能包含多个节,节头表可选。
如果是共享文件,则两者都含有。

彩色进度条实现

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 int main()
  4 {
  5       char bar[101];
  6       int i=0;
  7       const char *lable="-\\|/-";                                                                                                   
  8       for(;i<=100;i++)
  9       {
 10           bar[i]='\0';
 11           printf("\033[42m[%s]\033[0m[%%%d][%c]\r",bar,i,lable[i%4]);
 12           bar[i]=' ';
 13           usleep(100000);
 14           fflush(stdout);
 15     }
 16           printf("\n");
 17           return 0;
 18 
 19           }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值