一、安装vim插件
安装方法:通过下方的这个命令可进行vim的一键安装,在shell中执行指令(想在哪个用户下让vim配置生效,就直接在哪个用户下执行这个命令,不推荐直接在root下执行),按照提示输入root密码,但是root密码不会上传,可以放心输入
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注:只支持Centos7 x86_64环境
卸载方法:在安装vim的用户下执行下方的命令即可
bash ~/.VimForCpp/uninstall.sh
二、常用的编译器
vi
vi和vim是我们在Linux中最常用的编辑器。vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理字符界面中,永远不是图形界面的编辑器能比的。
注意:vi是unix/linux操作系统中最经典的文本编辑器,只能是编辑字符,不能对字体、段落进行排版;它既可以新建文件,也可以编辑文件;他没有菜单,只有命令,且命令繁多。
与此同时,它还具有自动补全、头文件补全、语法诊断、函数查找、文件查找等功能。
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也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码不会被任何事情所打断。比如在写HTML代码时,即便没有保存代码也可以及时预览Web页面效果。也可以使用Theseus来检查变量,Brackets默认提供一种主题,当然也可以在扩展中心获取更多的主题。Brackets是一款基于web(html+css+js)开发的web前端编辑器。
它有许多普通编辑器难以实现的功能,是web前端开发者的神器。
Emacs
Emacs不仅仅是一个编辑器,他是一个集成环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。Emacs不仅可以作为文本编辑器,还可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能,它和vim同样深受程序员喜爱。
Light Table
LightTable是一个免费开放源代码的编辑器,该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。使用Light Table,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。具有实时运行反馈,调试和搜索文档的功能。及时反馈功能提供了一个不同寻常的运行环境来让程序员构建抽象。
Chocolat
Chocolat本身是Mac OS X的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。Chocolat是最新出现的一款强大的Mac系统文本编辑器,兼具原生的Cocoa及强大的文本编辑功能。Chocolat支持很多种编程语言的关键字高亮显示、窗口分割、标签页、色彩主题等功能。
三、除了gcc, 常用的编译器
EGCS
包括了C/C++/Obj-C/Fortran等编译器
Clang
licence极度友好,代码质量非常好,采用的IR为LLVM IR非常优秀,但是Clang依赖于的LLVM,目前的性能无法与GCC相提辩论,缺乏对GCC一些Builtin函数、自身带的汇编器的孱弱,对一些开源软件没有办法编译过去。
ICC
没有自己专门的前端,而且是针对Intel体系结构上专门优化。
IBM XL C++
在IBM特定硬件与平台上表现非常好,Benchmark性能测试非常优秀,但是在编译时间上过长,对C++标准的支持、开源软件的支持、错误信息的提示上都不够友好。
四、为什么调试的时候需要编译选项中添加 -g
在 Linux 中,我们常用 gcc编译生成可执行文件, 但是可执行程序中没有可供 gdb 调试使用的特殊信息,无法使用 gdb 来跟踪或调试,因此我们需使用到 -g 选项,这样生成的可执行程序就可以使用 gdb 找出出现问题的位置,从而解决问题
五、readelf命令
readelf用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。
六、实现一个彩色的进度条
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<unistd.h>
4 #include<string.h>
5
6 int main()
7 {
8 char buf[100] = {0};
9 memset(buf,0,sizeof(buf));
10 const char *lable = "|/-\\";
11 int i = 0;
12 while(i<=100)
13 {
14 printf("\033[34m""[%-100s][%d%%][%c]\r",buf,i,lable[i%4]); //"\033[34m"将进度条颜色设置为蓝色
15 fflush(stdout);
16 buf[i++] = '-';
17 usleep(100000);//使进度条缓慢打印,usleep是以毫秒为单位,sleep是以秒为单位
18 }
19 printf("\e[0m""\n");
20 return 0;
21 }
在linux程序中设置颜色的命令
\033[0m 关闭转义序列
\033[1m 粗体或高亮
\033[5m 闪烁
\033[30m 黑
\033[31m 红
\033[32m 绿
\033[33m 黄
\033[34m 蓝
\033[35m 洋红
\033[36m 青
\033[37m 白