用vim打造适合本身的编辑器html
1、vimrc是vim的配置文件,能够修改两个位置linux
1.etc/vim/vimrc //通常配置文件都带有rc的后缀c++
2.~/.vimrc //在用户目录下存在的,/home/用户名程序员
~/.vimrc优先级高编程
进入etc/vim/vimrc vim
vimrc配置 http://www.cnblogs.com/wangj08/archive/2013/03/13/2957309.html编辑器
2、vim --v 查看本身的vim版本并下载相应的vim-ide的软件包ide
1.tar zxvf vim-ide.tar.gz -C ~/ //解压;函数式编程
2.解包到当前用户目录下,获得.vim隐藏文件函数
3.将里边的vimrc拷贝到用户当前的配置文件中
ln -s .vim/vimrc .vimrc
4.拷贝出.vim/.ycm_extra_conf.py到用户目录
cp ~/.vim/.ycm_extra_conf.py~/
//注意:tags文件记录每一个函数装在什么位置
3、vim-ide的快捷方式
,dd 在函数开头生成函数说明
,da 在文件开头生成文件说明
,dl 生成采用发布协议
,jd 跳转到函数定义或头文件所在地
,f 在头文件和源文件之间跳转,建立对应名字的头文件
,ta 打开函数列表,在右侧
,o 关闭多窗台,只保存当前窗口
,bf 显示已经打开的文件列表
,nn打开或关闭文件列表
,nl 取消搜索后的高亮显示
backspace 关闭tab buffer
,tab 在tab标签移动
C-t 建立新标签tab
:ta fun 跳到指定函数定义
V 选中函数
,zc折叠当前函数
,zr打开当前函数
,8在当前目录下生成tags文件
C-] 跳转到函数定义,利用Ctags
C-o返回
四.示例
int main(void) { printf("helloworld\n") while(1) { if(5>3) printf("aaaaaa\n"); else printf("bbbbbb\n"); } return 0; }
注意:好比括号这种成对的,成对的打出,按esc键,再进入插入模式进行插入操做。
编辑好后运行程序
gcc test.c -o test;
五.gcc
GCC 的意思也只是 GNU C Compiler 而已。通过了这么多年的发展,GCC 已经不单单能支持 C 语言;它如今还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也再也不单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也便是 GNU 编译器家族的意思了。另外一方面,说到 GCC 对于操做系统平台及硬件平台支持,归纳起来就是一句话:无所不在。
gcc test.c -o test
实质上,上述编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。
gcc选项概述
man gcc 查看更多选项信息
gcc [options] [filename]
-x language
-c 只对文件进行编译和汇编,不连接
-S 只对文件进行编译,不汇编和连接
-E 只对文件进行预处理
-o [file] file2
-lname (小写L)用来指定所使用的库文件 例:-lm 使用libm.a (m就是库的名称)
-Idirname 将dirname所指出的目录加入到程序头文件目录列表中
例:gcc foo.c -I /home/include -o foo
-Ldirname 将dirname所指出的目录加到库文件的目录列表中。
例:gcc foo.c -L /home/lib -lfoo -o foo
-static 静态连接(将库的内容加入程序中,造成完整的可执行程序)
-w 禁止生成警告信息
-Wall 显示附加的警告信息
-Dmacro 定义MACRO宏,等效于在程序中使用#define MACRO
例:gcc -DDEBUG hello.c -o hello
gcc -DNUM=2 hello.c -o hello
-pedantic 严格要求符合ANSI标准
-g 添加调试信息
-p 产生prof所需的信息
-pg 产生gpof所使用的信息
-O(-O1) 对编译出的代码进行优化
-O2 进行比-O高一级的优化
-O3 产生更高级别的优化
-v 查看gcc版本信息
-m*** 根据不一样的微处理器进行优化
-I 指定头文件目录,注意-I和以前没有空格,<>和“”
-g 包好调试信息,能够用哪一个gdb list 单步调试
-On n=0~3 编译优化,n越大优化越好
-Wall 提示更多警告信息
-D编译时定义宏,注意-D和之间没有空格(能够用来在编译阶段指定一个宏,再程序里用)
-E生成预处理文件
-M生成.c文件与头文件依赖关系以用于Makefile,包含系统库的头文件
-MM生成.c文件与头文件依赖关系以用于Makefile,不包括系统库的头文件
六.toolchain
binutils一组用于编译、连接、汇编和其余调试目的的程序,包括ar,as,ld,nm,objcopy,objdump等
https://linux.cn/lfs/LFS-BOOK-7.7-systemd/chapter06/binutils.html
转换程序地址为文件名称和行号;给定一个地址和可执行文件的名称,它使用可执行文件中的调试信息来判断与该地址关联的源文件以及行号。 |
|
建立、更改以及抽取归档文件。 |
|
一个将 gcc 的输出汇编到目标文件的汇编器。 |
|
连接器用来过滤 C++ 和 Java 符号以及防止重载函数冲突。 |
|
更新 ELF 文件的 ELF 文件头 |
|
显示调用关系图配置数据 |
|
一个将多个目标文件和归档文件合并为单一文件,重定位数据及绑定符号引用的连接器。 |
|
到 ld 的硬连接。 |
|
列出指定目标文件中出现的符号 |
|
转换某种类型的目标文件到另外一种类型 |
|
显示给定目标文件的信息,用选项能够控制显示特定信息;显示的信息对于使用编译工具的程序员很是有用。有机器码,汇编码,还有c码 objdump -dSsx a.out >file |
|
生成归档文件内容的索引并保存到归档文件;索引列出了全部归档文件成员——可重定位的目标文件定义的符号。 |
|
显示 ELF 类型的二进制文件的信息 |
|
列出所给目标文件各部分大小和总的大小 |
|
对每一个给定文件,输出不低于指定长度(默认是4)的可打印字符序列;对于目标文件,它默认只打印初始化和引导部分的字符串,而对于其它类型的文件扫描整个文件。 |
|
从目标文件中去除符号 |
|
二进制文件描述库 |
|
用于处理操做码—处理器指令的“可读文本”版本 的库;用于构建相似 objdump 的工具 |