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, 还有哪些常用的牛逼的编译器
- 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融合方案,目前这几项都得到有效改良,然而融合的道路也必定是漫长的,以前的历史包袱等也需要背上。
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
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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】
原题 Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 题目大意 给定一棵两叉树求树的最小深度。 解题思路 遍历法,对整个树进行遍历,找出最小的深度。 代码实现 树结果定义 public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } 1 2 3 4 5 6 算法实现类 public class Solution { private int min = Integer.MAX_VALUE; // 记录树的最小深度 private int cur = 0; // i当前处理的树的尝试 public int minDepth(TreeNode root) { depth(root); return m...
- 下一篇
android APP实现更新 PHP后台服务器
android APP实现更新 PHP后台服务器 最近自己在做一款APP,需要实现APP版本更新功能,从网上找了许多资料,只找到了关于移动端的实现。经过我的研究,终于实现了比较完整的android APP版本更新功能,在此分享给广大朋友,但是我的ios端还没实现,但是传输是基于的http协议,实现原理应该是大同小异的。接下来进入正文。 PHP后台服务器实现 后台的实现是基于的thinkPHP框架。对于PHP开发框架thinkPHP框架的朋友,只要去官网下载手册,看那么几页,我想你应该就懂了。 接下来直接给出PHP代码实现。 对于这个文件,大家需要修改的便是命名空间。 namespace API\Controller; use Think\Controller; 至于为什么,大家需要了解下PHP的基础知识,和thinkPHP框架的开发流程就可以了,很快的。 <?php namespace API\Controller; use Think\Controller; class ServerController extends Controller { public function ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Red5直播服务器,属于Java语言的直播服务器