linux常用工具

1 vim自行查找资料, 自行配置插件.

2 自行查找资料, 调研除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.

3 自行查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).

4 为什么调试的时候需要编译选项中添加 -g. 同学们自行调研readelf命令.

5 在Linux下实现进度条程序. 通过makefile进行编译. 建议自主完成一个彩色的进度条.

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

  1. vim自行查找资料, 自行配置插件.

查找资料以后,个人觉得可以参考下改篇博客:
https://blog.csdn.net/u010871058/article/details/54253774

  1. 自行查找资料, 调研除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.
  • nano
    直接在命令行中敲入nano newfile即可打开文件或新建文件。
  • vim
    vim/vi的区别简单点来说,他们都是多模式编辑器,不同的是vim是老式的文字处理器vi的升级版,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以在x window、mac os、windows。
    相对于较为简单的nano,其功能已经很齐全。
    vim有常用 三种模式:命令模式、插入模式、底行模式
    .
    命令模式:以vim打开或新建一个文件就可以直接进入一般模式,在此模式中,你可以使用上下左右来进行光标的移动,可以删除字符或整行,可以复制粘贴文件数据。
    .
    插入模式:顾名思义,就是可以编辑文本的模式,在一般模式下,按下“i,I,o,O,a,A,r,R”这些字母可进入编辑模式,进入编辑模式后在左下方会有INSERT或REPLACE的字样。
    在编辑模式下按下ESC键会退出到一般模式下。
    .
    底行模式:在一般模式下,输入” :, / , ? “这三个字符中的任意一个会将光标移动到当前页面最下面的一行,在这个模式中可以进行数据查找、替换、保存、离开vim等操作。
  • Emacs
    Emacs不仅仅是一个编辑器,他是一个集成环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。Emacs不仅可以作为文本编辑器,还可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能,它和vim同样深受程序员喜爱。
    在基于编辑器的功能基础上,Emacs自行开发了一个“bourne-shell-like”的shell: EShell。
    特点:
    (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。
  • Eclipse
    Eclipse是一款很酷的开源代码编辑器,它拥有代码高亮和智能提示等强大的功能。在Eclipse中,完全胜任以下编程语言的工作——Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是Java集成开发环境,甚至提供了对Java 8的支持。在一些Web开发IDE特性的帮助下,你可以非常方便地对代码文件进行组织和访问。尽管 Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C++、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
  • Brackets
    Brackets是一款专注于网页开发并使用网页标准构建的开源编辑器,一款使用 HTML、JavaScript 和 CSS 编写的编辑器。它首次于 2012 年 7 月在 GitHub 上面世,尽管此项目由 Adobe 发起,Brackets 的构建也包含无数的开源软件作者。
    Brackets 主要用于网页开发。你可以自行体验编辑 HTML、CSS 和 JavaScript 时便捷的代码提示,同时你也可以尝试其它牛逼的功能。比如“实时预览”功能,它把你的编辑器与浏览器连接起来,随着你对 CSS 的编辑,浏览器中将会实时更新来提供便捷的交互编辑。
  • Light Table
    LightTable是一个免费开放源代码的编辑器,该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。使用Light Table,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。具有实时运行反馈,调试和搜索文档的功能。及时反馈功能提供了一个不同寻常的运行环境来让程序员构建抽象。
  • Chocolat
    Chocolat 本身是 Mac OS X的最佳代码编辑器。该编辑器旨在与 OS 无缝集成,Chocolat为 JS、Python 和 HTML 提供拖放功能、拆分编辑、代码折叠和代码完成。Chocolat 是最新出现的一款强大的 Mac 系统文本编辑器,兼具原生的Cocoa及强大的文本编辑功能。Chocolat 支持很多种编程语言的关键字高亮显示、窗口分割、标签页、色彩主题等功能。界面和 MacVim 非常相似。
  • Sublime Text
    一个紧凑但性能较高的代码编辑器一个跨平台的代码编辑器,适用于所有WordPress项目。 Sublime Text有很多功能可以提供:
    ·脚本编程  ·自定义界面  ·常规文件切换  ·合成和错误检测  ·多媒体选择和编辑 ·外部插件集成 ·Themes

3 自行查找资料, 调研除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).

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

4 为什么调试的时候需要编译选项中添加 -g. 同学们自行调研readelf命令.

  • 调试的时候需要编译选项中添加 -g, 加选项-g是为了能够调试,不加可以运行,但不能调试。默认编译生成的可执行文件是release版本,无法使用 gdb 来跟踪或调试的,因为可执行程序中没有可供 gdb 调试使用的特殊信息,为了将必要的调试信息整合到可执行文件中,我们便需要用到 -g 选项,这样生成的可执行程序,倘若出现问题,便可以使用 gdb 找出问题具体出现的位置,便于问题的解决。
    “-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。
    加上-g选项以后,gcc在编译是会做以下额外的操作:
    (1).创建符号表,符号表包含了程序中使用的变量名称的列表
    (2).关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行
  • readelf命令
    readelf 命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
    ELF(Executable and Linking Format)是一个定义了目标文件内部信息如何组成和组织的文件格式。内核会根据这些信息加载可执行文件,内核根据这些信息可以知道从文件哪里获取代码,从哪里获取初始化数据,在哪里应该加载共享库,等信息。
    ELF文件有下面三种类型:
    1.目标文件
    gcc -c test.c -o test.o
    得到的test.o就是目标文件,目标文件通过链接可生成可执行文件。
    静态库其实也算目标文件,静态库是通过tar命令将目标打包为.a文件。
    如:tar crv libtest.a test.o
    2.可执行文件
    gcc -o test
    得到的test文件就是可执行的二进制文件。
    3.共享库
    gcc test.c -fPIC -shared -o libtest.so
    得到的文件libtest.so就是共享库。
    可以通过readelf来区分上面三种类型的ELF文件,每种类型文件的头部信息是不一样的!

5 在Linux下实现进度条程序. 通过makefile进行编译. 建议自主完成一个彩色的进度条.

我的 jindutiao.c 文件配置:
在这里插入图片描述

  1 #include <stdio.h>                                                          
  2 #include <unistd.h>
  3 #include <string.h>
  4 int main()
  5 {
  6     char bar[102];
  7     memset(bar , 0 ,sizeof(bar));
  8     int i = 0;
  9     const char* str = "-\\|/";
 10     while(i <= 100)
 11     {
 12         printf("\033[34;47m[%-100s] \033[31m[%d%%]\033[30m[%c]\r",bar,i,str[    i%4]);
 13         fflush(stdout);
 14         bar[i++]='#';
 15         usleep(100000);
 16     }
 17    printf("\n");
 18    return 0;
 19    }

进度条结果:
在这里插入图片描述

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

  • 源码安装:
    步骤: 编译源码,然后安装
    (1) 安装准备:
    a、首先用yum安装gcc,用于编译源码
    b、管网下载源码包
    c、winSCP windows与Linux传输文件(若直接用安装软件的linux电脑下载就不用传输了)
    (2) 安装过程
    a、解压
    b、进入解压后的目录配置文件 ./configure # 大多数情况下源码包都会带configure这样一个配置工具,具体使用方法可以vim查看其内容
    c、make #编译源码包 如果报错了 make clean 清除缓存重新make
    d、make install # 安装
    然后删除源码包软件和安装目录
  • rpm安装
    rpm安装:安装别人编译好的软件包
    rpm即Redhat Package Manager,Redhat的软件包管方式,适用rpm install 命令
    rpm不仅已经把软件源代码编译成二进制文件,而且对软件包依赖的文件,系统环境等做了统计文件扩展名:rpm
    还有一种SRPM:没有编译成二进制文件,但是也包含rpm的特性
  • yum安装
    用rpm方式安装软件,如果依赖的软件没有事先安装,软件无法安装成功。
    为了解决这个问题,推出yum方式。
    既然依赖的软件没有安装在机器上,那么就先安装依赖文件,再安装我需要安装的软件。
    因此yum在安装软件同时安装依赖文件。
    因此需要一个yum源来放依赖的软件源(国内大多数网易,阿里yum源),对比被安装机器上rpm软件库归根到底,yum也是基于rpm的。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值