Linux_开发工具

Linux_开发工具

Linux_开发工具

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

Emacs

如果说Vim是编辑器之神,那么Emacs是神的编辑器。
有句夸张的话说:Emacs是伪装成编辑器的操作系统,这句话并不夸张。 Emacs其实是个Lisp的解释器,因此可以用Lisp灵活地扩展。 Lisp是什么东西,这同样是种很有生命力的编程语言。在C语言还没有发明的年代,MIT的人工智能实验室写ITS操作系统时,一部分用的是汇编语言,还有一部分就是用的Lisp。
现在,Lisp仍在人工智能研究领域广泛使用着。有这么牛逼的扩展语言,注定Emacs向着无所不能的方向发展。渐渐地,人们用Emacs不再限于写程序,写文档,而且在Emacs里管理文件系统,运行终端,收邮件,上网,听音乐……,真是一发不可收拾。甚至,有人用Emacs控制咖啡机煮咖啡。

在基于编辑器的功能基础上,Emacs有如下特点:
(1)交互式编辑器(2)实时编辑器(3)高级编辑器(4)自文档化(5)可定制性(6)可扩展性(集成Lisp语言)(7)支持X Window环境
Emacs和vim的区别:
(1)vim更偏向于简单中的复杂。
(2)而emacs则是复杂中的简单。
(3)emacs可扩展性极强
(4)vim他的快捷键很有特色。键盘上的各种符号键也是利用的很广。
(5)vim内置脚本语言有局限性,emacs的lisp语言更加强大。
(6)功能上来讲emacs可以做编辑器以外的很多事情。比如很多软件都可以使用emacs作为前端。
(7)一般来说vim只用作编辑器,或者是一个繁琐的IDE。

nano
nano是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano。

直接在命令行中敲入nano filename即可打开文件或新建文件。
nano与vim区别
1 nano操作简单,界面简洁,适合linux新手学习,
2 vim是老式的文字处理器vi的升级版,功能较nano更为齐全,有四种模式:命令模式,,插入模式,底行模式。
命令模式:以vim打开或新建一个文件就可以直接进入一般模式,在此模式中,你可以使用上下左右来进行光标的移动,可以删除字符或整行,可以复制粘贴文件数据。
插入模式:顾名思义,就是可以编辑文本的模式,在一般模式下,按下“i,I,o,O,a,A,r,R”这些字母可进入编辑模式,进入编辑模式后在左下方会有INSERT或REPLACE的字样。
在编辑模式下按下ESC键会退出到一般模式下。
底行模式:在一般模式下,输入” :, / , ? “这三个字符中的任意一个会将光标移动到当前页面最下面的一行,在这个模式中可以进行数据查找、替换、保存、离开vim等操作。

02 除了gcc, 还有哪些常用的牛逼的编译器

  1. MSVC,Windows平台上最常用的编译器,在C++编译器圣战中的胜利者,一个常被人诟病的是对标准的支持不够新不够快(最近开始逐步加快了)。随着微软发布基于Clang / C2,这一条路以后若成功,MSVC与Clang / C2并行,甚至逐步逐步退出舞台,都是有可能的事情。
  2. Clang,重点介绍。licence极度友好,代码质量非常棒,采用的IR为LLVM IR非常优秀,各大公司逐步发力在Clang上,包括不限于微软,IBM,Nvidia等,各大公司也在开始疯狂的往Clang / LLVM交代码(圈地),也开始往Clang实现OpenMP,Nvidia GPU等支持,目前在赶超GCC的道路上一路激情的狂奔,前途一片光明。但是Clang依赖于的LLVM,目前的性能无法与GCC相提辩论,在Benchmark性能测试上几乎没有胜利的项目,优化的道路上任重道远,同时一些开源软件没有办法编译过去,主要是缺乏对GCC 一些Builtin函数、自身带的汇编器的孱弱导致。
  3. GCC/G++,跨体系结构很多,很多开源软件默认编译器都是GCC/G++,这一点上Clang比不上。
  4. ICC,没有自己专门的前端(传说中的外包),而且是针对Intel体系结构上专门优化。
  5. IBM XL C++,在IBM特定硬件与平台上表现非常牛逼,Benchmark性能测试非常优秀,其最初的设计思想就是为了性能,其最高优化级别可以达到O5,带来的缺点则是在编译时间上往往过长。而另外一个常被人诟病的是对C++标准的支持、开源软件的支持、错误信息的提示上都不够友好,然而从13.2开始,随着IBM采用Clang融合方案,目前这几项都得到有效改良,然而融合的道路也必定是漫长的,以前的历史包袱等也需要背上。

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

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

04 Makefile-----彩色进度条

pro_bar.c
#include<stdio.h>
#include<unistd.h>
int main()
{
        char bar[101];
        int i=0;
        const char *lable="-\|/-";
        for(;i<=100;i++)
        {
                bar[i]='\0';
                printf("\033[42m[%s]\033[0m[%%%d][%c]\r",bar,i,lable[i%4]);
                bar[i]=' ';
                usleep(100000);
                fflush(stdout);
        }
        printf("\n");
        return 0;
}
makefile
pro_bar:pro_bar.o
        gcc pro_bar.o -o pro_bar
pro_bar.o:pro_bar.s
        gcc -c pro_bar.s -o pro_bar.o
pro_bar.s:pro_bar.i
        gcc -S pro_bar.i -o pro_bar.s
pro_bar.i:pro_bar.c
        gcc -E pro_bar.c -o pro_bar.i
.PHONY:
clean:
        rm -f pro_bar pro_bar.i pro_bar.s pro_bar.o

Linux_开发工具

05 Linux下软件安装的几种方式(源码安装, rpm安装, yum安装). 重点要理解rpm安装和yum安装的区别.

源码安装方式是需要自己到网上下载源码包,然后解压安装。此方式可以指定配置参数,更加灵活方便,兼容性更强。比较适合对Linux系统有较多了解的进阶用户使用。

rpm安装就是:安装别人编译好的软件包

rpm即Redhat Package Manager,Redhat的软件包管理方式,适用rpm install 命令

rpm不仅已经把软件源代码编译成二进制文件,而且还对软件包依赖的软件,系统环境等做了统计

文件扩展名:rpm
还有一种SRPM:没有编译成二进制文件,但是也包含rpm的特性
用rpm方式安装软件,如果依赖的软件没有事先安装,软件无法安装成功。
为了解决这个问题,推出yum方式。

yum安装

既然依赖的软件没有安装在机器上,那么就先安装依赖的软件,在安装我需要安装的软件。因此yum在安装软件同时安装依赖软件。因此需要一个yum源来放依赖的软件源,对比被安装机器上rpm软件库。

归根到底,yum也是基于rpm的。

原文地址http://www.bieryun.com/2554.html

上一篇:JQuery 获取鼠标位置


下一篇:受累光伏行业低迷“旧账” 福斯特计提资产减值准备