在目录/etc/下面,有个vimrc
的文件,这是系统中公共的vim配置文件,对所有用户都有效。
而在每个用户的主目录下,都可以自己建立私有的额配置文件,命名为:.vimrc
。例如,在/root
目录下,通常已经存在一个.vimrc
文件,如果不存在,自己创建一个就可以了。
注意:配置vim不要再系统公共的vimrc
进行配置,这样就会给每个用户都配置了,Linux毕竟是一个多用户的操作系统,每个人的配置喜好都是不同的,所以呢,用户如果需要配置vim就在用户的当前目录进行配置。按 cd~
进入当前用户的主工作目录。
打开当前目录下的.vimrc
,执行vim .vimrc
.
配置后:
尽管前后大差距不大,但如果你配置了几十上百条呢?vim就会显得很不同啦。
大家有没有想过明明软件的运行需要编译,而编译器也是软件那么编译器也需要编译,所以是先有的语言还是先有的编译器? 先给出答案吧,当然是先有的语言。 我们都知道最开始控制计算机是需要使用二进制的,利用打孔纸袋来控制计算机。就是这样的纸袋。
然后因为二进制来控制计算机实在是太麻烦了,科学家就发明出来了汇编语言,汇编语言虽然是低级语言,但也需要编译器让它转化位二进制。那么汇编语言的编译器是用什么写的呢?没错是用二进制写的,在最开始会利用二进制写的编译器编译汇编语言,在编译成功后,我们就可以用汇编语言写一个编译器,然后在二进制编译器编译成功后就改用汇编写到编译器来编译汇编语言。 以此类推像C/C++编译器也是如此。
编译器的自举: C->低级语言写一个C编译器 ->能形成软件了 C编译器->C ->低级语言写一个C编译器 ->形成了用C写的编译器了 C:>用C写的编译器了->编译C语言 C编译器优化v2->用C写的编译器v1->v2编译器
语法:
gcc [选项]要编译的文件[选项][目标文件]
预处理:进行宏替换
gcc -E test.c -o test.i
-E
,该选项的作用是让gcc在预处理结束后停止编译过程-o
是指目标文件,.i
文件为已经预处理过的C原始程序。
编译:生成汇编-S
选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码,
实例:从现在开始进行程序的翻译,当编译工作做完就停下来gcc -S test.i -o test.s
汇编:生成机器可识别代码
.s
文件转化为目标文件-c
就可以看到汇编代码转化为.o
的二进制目标代码了
实例:从现在开始进行程序的翻译,当汇编工作做完就停下来gcc -c test.s -o test.o
因为vim是文本编辑器,查看二进制文件就会出现一堆乱码。
链接:生成可执行文件或库文件
gcc test.o -o mybin
我们的C程序中,并没有定义printf
的函数实现,且预编译中包含的stdio.h
中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实现printf
函数的呢?
回答:
系统把这些函数实现都被做到名为libc.so.6
的库文件中去了,在没有特别指定时,gcc会到系统默认的搜索路径/usr.lib
下进行查找,也就是链接到libc.so.6
库函数中去了,这样就能实现函数printf
了,而这也就是链接的作用。
函数库一般分为静态库个动态库两种
.a
.so
如前面所说的,libc.so.6
就是的动态库。gcc在编译时默认使用动态库。完成了链接之后,gcc就可以生成可执行文件,如下:gcc test.o -o test
file
指令验证gcc选项