Linux相关开发工具


开始学习在Linux下敲代码,但是vim太难用,便学习配置,给大家分享下,嘻嘻。

1.vim的配置

1)简易版

a.进入root
b.在当前用户的主目录下创.vimrc文件
c.将下面代码粘贴到 .vimrc文件


 “双引号开始的行为注释行,下同

“去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限

 set nocompatible

 “显示行号

 set number

 “检测文件的类型

 filetype on 

 “记录历史的行数

 set history=1000 

 “背景使用夜晚模式 //你会很爽的

color evening

 “语法高亮度显示

 syntax on 

 “下面两行在进行编写代码时,在格式对起上很有用;

 “第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行;

 “第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编

 “写上很有用

 set autoindent

 set smartindent

 “第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格

 set tabstop=4

 set shiftwidth=4

 “设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

 set showmatch

 “去除vim的GUI版本中的toolbar

 set guioptions=T

 “当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声

 set vb t_vb=

 “在编辑过程中,在右下角显示光标位置的状态行

 set ruler

 “默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示

 set nohls

 “查询时非常方便,如要查找book单词,当输入到/b时,会自动找到第一

 “个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依

 “次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词

 “时,别忘记回车

 set incsearch

 “修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀

 if has(“vms”) //注意双引号要用半角的引号" "

 set nobackup

 else

 set backup

 endif
 "自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
    else
        return a:char
    endif
endfunction
filetype plugin indent on 

2)优化版

https://gitee.com/HGtz2222/VimForCpp

2.编辑器之间的区别和优缺点

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

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

  • 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默认提供一种主题,当然你也可以在扩展中心获取更多的主题。

  • 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
    注:上述编辑器摘自网上搜索。

3.除了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融合方案,目前这几项都得到有效改良,然而融合的道路也必定是漫长的,以前的历史包袱等也需要背上。
    注:上述编译器摘自网上搜索。

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

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

5.源码安装,rpm安装和yum安装

(1)yum安装可以看成是从网络在线安装的一种方式,只需要yum install 软件名,系统就自动根据yum源配置文件中的镜像位置去下载安装包了,并可以自动分析所需的软件依赖关系,自动安装所需的依赖软件包。此方式适合初学者,简单方便,不用考虑依赖关系。但有些软件并不能通过yum来安装。

用rpm方式安装软件,如果依赖的软件没有事先安装,软件无法安装成功。

为了解决这个问题,推出yum方式。

既然依赖的软件没有安装在机器上,那么就先安装依赖文件,再安装我需要安装的软件。

因此yum在安装软件同时安装依赖文件。

因此需要一个yum源来放依赖的软件源,对比被安装机器上rpm软件库归根到底,yum也是基于rpm的。

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

 步骤: 编译源码,然后安装
   1.1安装准备:
   a、 首先用yum安装gcc,用于编译源码
   b、管网下载源码包
   c、winSCP windows与Linux传输文件(若直接用安装软件的linux电脑下载就不用传输了)
   1.2 安装过程
   a、解压
   b、进入解压后的目录配置文件  ./configure # 大多数情况下源码包都会带configure这样一个配置工具,具体使用方法可以vim查看其内容
   c、make #编译源码包 如果报错了 make clean 清除缓存重新make
   d、make install # 安装
   然后删除源码包软件和安装目录


(3)rpm是安装本地存在的rpm包,如果存在依赖也需要安装上,如果某个rpm是自己修改编译的,那么只能用rpm安装了

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

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

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

还有一种SRPM:没有编译成二进制文件,但是也包含rpm的特性


6.readelf命令.

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

这个程序和objdump提供的功能类似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD库是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件),所以即使BFD库有什么bug存在的话也不会影响到readelf程序。

运行readelf的时候,除了-v和-H之外,其它的选项必须有一个被指定。
2)命令选项

-a 
--all 显示全部信息,等价于 -h -l -S -s -r -d -V -A -I. 

-h 
--file-header 显示elf文件开始的文件头信息. 

-l 
--program-headers  
--segments 显示程序头(段头)信息(如果有的话)。 

-S 
--section-headers  
--sections 显示节头信息(如果有的话)。 

-g 
--section-groups 显示节组信息(如果有的话)。 

-t 
--section-details 显示节的详细信息(-S的)。 

-s 
--syms        
--symbols 显示符号表段中的项(如果有的话)。 

-e 
--headers 显示全部头信息,等价于: -h -l -S 

-n 
--notes 显示note段(内核注释)的信息。 

-r 
--relocs 显示可重定位段的信息。 

-u 
--unwind 显示unwind段信息。当前只支持IA64 ELF的unwind段信息。 

-d 
--dynamic 显示动态段的信息。 

-V 
--version-info 显示版本段的信息。 

-A 
--arch-specific 显示CPU构架信息。 

-D 
--use-dynamic 使用动态段中的符号表显示符号,而不是使用符号段。 

-x <number or name> 
--hex-dump=<number or name> 以16进制方式显示指定段内内容。number指定段表中段的索引,或字符串指定文件中的段名。 

-w[liaprmfFsoR] or 
--debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges] 显示调试段中指定的内容。 

-I 
--histogram 显示符号的时候,显示bucket list长度的柱状图。 

-v 
--version 显示readelf的版本信息。 

-H 
--help 显示readelf所支持的命令行选项。 

-W 
--wide 宽行输出。 

@file 可以将选项集中到一个文件中,然后使用这个@file选项载入。 

详细可参考:
http://man.linuxde.net/readelf

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值