Linux系统常用命令(3)

1. man命令

2. echo命令

例1:

例2:   查看某环境变量的值

3. vim的三种模式

vim中是不能用鼠标的,我们需要用命令来对文件进行操作。

4. vim中的光标位置删除_撤销操作

注:光标实际处在所覆盖字符的前面位置。

5. vim中的复制和粘贴

复制光标所在当前行是命令 yy ,删除其实就是剪切。

扫描二维码关注公众号,回复: 6649655 查看本文章

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)动态库没有被打包到应用程序中,加载速度相对较慢。

猜你喜欢

转载自blog.csdn.net/mengyujia1234/article/details/90485434