一.vim

vim厉害的原因:
1.支持非常丰富的快捷键。
2.支持非常丰富的扩展功能。
vim的竞争对手:
1.emacs(2000年之前)
2.notepad ++/notepadplus/ue/sourece insight(2000-2010)
3.(2010年左右)Sublime text  (缺点:收费闭源)
        a)界面长得好看
    b)支持vim风格的快捷键
    c)支持丰富的扩展
4.vscode (MS)(开源软件中排行第三的项目)
    a)界面长得好看
    b)支持vim风格的快捷键
    c)支持丰富的扩展
    d) 安装插件非常方便
5.atom(Github)    
    a)界面长得好看
    b)支持vim风格的快捷键
    c)支持丰富的扩展
    d) 安装插件非常方便
    e) 启动速度非常慢
6.neovim (真正威胁vim的代码编辑器)
    
    a)界面长得好看
    b)支持vim风格的快捷键
    c)支持丰富的扩展
    d) 可脱离图形界面,用命令行

二.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融合方案,目前这几项都得到有效改良,然而融合的道路也必定是漫长的。

Visual Studio
Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。

Visual Studio是目前最流行的Windows平台应用程序的集成开发环境。支持C类语言、Basic类语言、Java类语言及其他语言,因其强大的功能,占用了很大的用户份额。

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

在 Linux 中,我们常用 gcc编译生成可执行文件, 但是可执行程序中没有可供 gdb 调试使用的特殊信息,无法使用 gdb 来跟踪或调试,因此我们需使用到 -g 选项,这样生成的可执行程序就可以使用 gdb 找出出现问题的位置,从而解决问题。

3. readelf命令

(1)readelf用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。

(2)选项

在 Linux 中输入 man readelf

四.

主要的区别在于:
 rpm :只能安装已经下载到本地机器上的rpm包,无法解决软件包的依赖关系。 
 yum:在线下载并安装rpm包,能更新系统,能自动处理包与包之间的依赖问题。

yum
YUM被称为 Yellow dog Updater, Modified,是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。YUM使用Python语言写成。YUM客户端基于RPM包进行管理,可以通过HTTP服务器下载、FTP服务器下载、本地软件池的等方式获得软件包,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系。

YUM在安装RPM时,会从服务器下载相应包,且缓存在本地。
 使用YUM进行RPM包的管理,非常简单方便。
rpm
RPM管理支持事务机制。增强了程序安装卸载的管理。

RPM的功能:
  打包、安装、查询、升级、卸载、校验、数据库管理。

RPM的缺点:
  由于Linux中的程序大多是小程序。程序与程序之间存在非常复杂的依赖关系。RPM无法解决软件包的依赖关系。

RPM包
 用RPM工具可以将二进制程序进行打包,包被称为RPM包。RPM包并不是跨平台的

五.实现一个彩色进度条程序

编写vim paocess_bar.c

编写makefile文件

结果如下:

Linux下关于gcc、vim、readelf、rpm、yum、彩色进度条的问题相关推荐

  1. linux下的软件包安装(rpm   yum)

    软件包安装主要有两种方式包括1,二进制安装(rpm yum)2,源代码安装. 1,二进制安装 Rpm  全称 redhat packet manager 功能:安装 卸载 升级 校验 查询 适用平台: ...

  2. linux下使用gcp拷贝数据的时候显示进度条

    文章目录: 1 安装gcp 2 gcp命令使用 3 对cp命令起别名alias 在使用linux自带的复制命令cp的时候,不会显示进度条和复制完成的百分比.预估时间等信息.如果复制的文件特别大,不能够 ...

  3. 在裸linux(没有GCC,没有RPM包管理器,没有make命令,没有系统软件管理器如apt-get,zypper,yast等的情况下)安装部署软件的方法

    在裸linux(没有GCC,没有RPM包管理器,没有make命令,没有系统软件管理器如apt-get,zypper,yast等的情况下) 安装部署rpm软件的方法之一 当在被极度裁剪的linux系统中 ...

  4. Linux代码编译(模式切换、gdb、编译器之间的对比、彩色进度条、rpm与yum区别)

    常用工具: 软件包管理工具:yum 编程相关工具:vim.gcc/g++.gdb 项目相关工具:make/Makefile.git 查看软件包:yum list/grep key 安装软件包:yum ...

  5. linux下安装gcc

    linux下安装gcc,我们有一台服务器以前的管理员居然在装系统的时候没有装gcc,我晕死了,当时抱着试试看的态度去装gcc,我用到了yum,因为rpm的依赖关系太多了,实在是没得搞,我的系统是lin ...

  6. linux 内网yum,Linux下 内网环境 通过ISO yum安装依赖

    Linux下 内网环境 通过ISO yum安装依赖 上传系统系统镜像 创建镜像挂载点 mkdir iso 将系统镜像挂载到 /iso 挂载点上 [root@localhost home]# mount ...

  7. 在Linux下gcc缺省编译,在Linux下用gcc编译hello world

    1. 确保Linux系统里已经装好了gcc 测试:输入gcc后是如下的结果就说明已经安装成功 2. 创建HelloWorld.c 使用 touch 创建一个空文件; 用vim编辑 按下A或者I 插入 ...

  8. g 最新编译器linux,Linux下安装gcc 、g++ 、gfortran编译器

    一.ubuntu下gcc/g++/gfortran的安装 1.安装 (1).gcc ubuntu下自带gcc编译器.可以通过"gcc -v"命令来查看是否安装. (2).g++ 安 ...

  9. 关于EeePc的Linux下安装GCC编译器

    最近由于需要,把几年前(有点夸张)的EeePc 1000拿出来,想在它自带的Linux系统下进行编程.谁知道居然没有GCC编译器,所以源码安装肯定是不行的啦. 后来在终端(ctrl+alt+t)里输入 ...

最新文章

  1. AcWing算法提高课 Level-3 第四章 高级数据结构
  2. VTK:Medical之GenerateCubesFromLabels
  3. JAVA SAX解析XML文档
  4. System verilog随机系统函数$urandom使用方法
  5. Ubuntu 下为 Idea 创建启动图标.
  6. JavaSE(十一)加密与安全
  7. 自步学习-Self-paced Learning
  8. 华为“天才少女”年薪156万:她靠什么改写了普通女孩的人生?
  9. 没想到你是这样的MethodArgumentNotValidException
  10. 查找linux内核漏洞查用的方法脚本
  11. 实用经验 92 区分函数模版与模版函数,类模版和模板类
  12. 何为五笔输入的最高境界?
  13. JS 删除对象和数组中的某个属性
  14. 使用colab训练faster-rcnn pytorch版(代码来源:霹雳吧啦Wz)
  15. nextjs学习笔记
  16. 湖南多校对抗赛(csu 1560)
  17. linux 下使用ITK-SNAP
  18. 《Gartner 2018 BI与数据分析魔力象限》报告解读
  19. openpyxl删除行与删除列
  20. Android 13 适配指南

热门文章

  1. 解决Python报错:local variable ‘xxxxx‘ referenced before assignment
  2. OpenCV检验物体尺寸
  3. 回声检测仿真信号matlab,杭州oracle培训入门
  4. 磁盘位置_Win10创建和附加虚拟硬盘|Win10怎么创建VHD虚拟磁盘
  5. valgrind 检查内存泄露
  6. 【bzoj4868】[Shoi2017]期末考试 前缀和+暴力
  7. JSON与Delphi Object的互换
  8. 给 Android 研发的一些的建议
  9. Python——杂记
  10. Smack+Openfire 接收和发送文件