1. man命令
2. echo命令
例1:
例2: 查看某环境变量的值
3. vim的三种模式
vim中是不能用鼠标的,我们需要用命令来对文件进行操作。
4. vim中的光标位置删除_撤销操作
注:光标实际处在所覆盖字符的前面位置。
5. vim中的复制和粘贴
复制光标所在当前行是命令 yy ,删除其实就是剪切。
6. vim可视模式和查找
让当前行向右缩进:>>
让当前行向右缩进:<<
查看man文档:当进行查找操作后,光标此时在查找到的内容身上,此时 shift + k 可以进入它所在man文档中首次出现的位置。如果此时 3 + shift + k 可以指定跳转到man文档的第三章。
7. 命令模式切换到文本模式
注:1. a和i 在光标所在位置的后边和前边插入,这里的光标所在位置指的是被光标覆盖的字符,就是在这个字符的后边和前边插入。2. s 删除光标后边的字符指的就是被光标覆盖的字符。
8. 末行模式相关操作
(1)查找替换:
1) :s/tom/jack 将光标所在行的第一个tom换成jack。
2) :s/tom/jack/g 将光标所在行的所有tom都换成jack。
3) :%s/tom/jack 文档中每一行的第一个tom被换成jack。
4) :%s/tom/jack/g 文档中所有的tom都被换成jack。
5) :27,30s/tom/jack/g 只有第27-30行的tom被换成jack。
(2)在末行模式下用 :!+ 命令 来执行命令: :!pwd 或 :!ls 等会输出信息:
(3)保存退出
9. vi分屏
(1):sp 显示上下分屏
(2):vsp 显示左右分屏
(3):sp + 文件名字 / :vsp + 文件名字 新打开的文件和之前的文件就会一起显示。 如果修改内容了的话,需要在保存之后两个才会显示的一样。
(4)ctrl + w + w 在两个分屏之间进行切换。
(5):q 关掉一个分屏 :qw 关掉并保存一个分屏 :qwall 关掉并保存所有分屏,等等组合。
10. vim的配置文件
11. gcc的编译过程
例:
12. gcc的一些参数
(1)gcc sum.c -o myapp 这样就可以直接生成myapp这个可执行文件。
(2)gcc sum.c -I ./include -o app 如果头文件不在当前目录下,需要指定头文件所在的目录(比如在./include),用 -I 参数指定。
(3)下面这段代码define了一个宏DEBUG,并且在要printf时判断是否定义这个宏了,如果定义了就执行printf。
那么如果把#define DEBUG给注释掉,那么再生成并执行的程序就不输出打印的内容了。我们用一个方法也可以加宏,就是在编译程序的时候,用参数-D DEBUG指定宏就可以了,这样就又可以输出打印内容了,如下:
(4)-O1、-O2、-O3 这三个参数可以不同程度优化程序,可以把冗余的代码做一个优化,其中O3优化的级别最高。
(5)-Wall 参数可以在程序编译时输出警告信息。
(6)-g 参数是在程序中添加一些调试信息。(gdb调试的时候必须加此参数)
13. 静态库的制作和使用
例:
Calc目录中有一个main.c文件,还有3个目录:include、lib、src。
打开src目录中的一个文件,比如add.c:
里面是add的实现:
打开include目录中的head.h头文件,里面是函数的声明:
下面开始生成静态库,先是第一步,生成对应的.o文件:
然后是第二步,将生成的.o文件打包:
这样就生成了静态库libMyCalc.a,然后把它移动到lib目录中去:
现在把include目录和lib目录给用户,他们就可以用了。下面是在main.c中使用:
生成可执行文件sum并执行(方法1):
生成可执行文件sum并执行(方法2): -L参数用来指定静态库所在目录, -l参数用来指定静态库的名称(去掉头尾)。
14. 静态库的优缺点
如果程序中只调用了函数a()和函数b(),那么编译生成的可执行文件中只包含add.o和sub.o。
静态库的优点:
(1)发布程序的时候,不需要提供对应的库
(2)加载库的速度快
静态库的缺点:
(1)库被打包到应用程序中,导致可执行文件体积较大。
(2)库发生了改变,需要重新编译程序。
15. 共享库的制作
例:
生成与位置无关的代码:
用静态库生成可执行文件后,.o文件在程序运行初始时就在代码段中了,位置是固定的,称为与位置有关的.o;
而用共享库时,在程序运行起来之后共享库才被逐步被加载到 共享库区,每次位置不一定相同,称为与位置无关的.o。
上面已经生成.o了,现在生成动态库.so:
然后把.so移动到 lib目录中:
现在把include目录和 lib目录给用户,他们就可以用了。
16. 共享库的使用
生成可执行文件(方法1):
生成可执行文件(方法2):
现在运行可执行文件会发现运行不了,这是因为找不到动态库libMyCalc.so。
可执行程序在执行时,动态链接器会自动调用需要使用的动态库。
ldd命令可以查看可执行文件依赖的动态库,下图红框框起来的动态库就是动态链接器。
可以看到自己创建的动态库 libMyCalc.so 在程序运行时是不能被找到的,我们有以下方法来解决:
推荐使用第4种方法。解决后可以看到程序可以正常运行了。
17. 共享库的优缺点
共享库的优点:
(1)可执行文件体积小。
(2)动态库更新了,不需要重新编译程序(函数接口不变时)。
共享库的缺点:
(1)发布程序的时候,需要将动态库提供给客户。
(2)动态库没有被打包到应用程序中,加载速度相对较慢。