1. vim编辑器的使用
2. gcc编译器
3. 静态库的制作 -- lib
4. 动态库的制作 -- dll
5. gdb调试
vi -- vim
vim是从vi发展过来的一款文本编辑器
vi a.txt
前提: 安装了vim软件
工作模式:
1. 命令模式 -- 打开文件之后, 默认进入命令模式
2. 编辑模式 -- 需要输入一些命令, 切换到编辑模式
3. 末行模式 -- 在末行模式下可以输入一些命令
1. vim编辑器的使用
命令模式下的操作:
1>. 光标的移动
H J K L
前 下 上 后
行首: 0
行尾: $
文件开始位置: gg
文件末尾: G
set nu;
2>. 撤销操作
撤销: u
反撤销: ctrl + r
windows 撤销 ctrl +z
反撤销:ctrl+y,ctrl+shift+z
3>. 查找操作
1). /hello 查找完鼠标在最上面的
2). ?hello 查找完鼠标在最下面的
3). # -- 把光标移动到查找的单词身上 , 按#
遍历时候的快捷键: N/n
缩进:
向右: >>
向左: <<
末行模式下的操作:
跳转行: :300 跳转到300行。
查找: :s/tom/jack/g 将tom全部替换成jack这一行
:%s/tom/jack/g将文件内所有的tom替换成jack
:20,25s/tom/jack/g将20行到25行的tom换成jack。
保存退出:
q: 退出
q!: 退出不保存
w: 保存
wq: 保存退出
分屏操作:
1>. 水平分屏 sp (当前文件,不用加文件名。别的文件+绝对路径下文件名)
2>. 垂直分屏 vsp
快捷键 ctrl+w(按两次w进行换屏操作)
2. gcc编译器
1>. gcc工作流程
gcc sum.c -o myapp;(直接生成一个可执行文件)
./myapp(执行可执行文件)。
如果头文件没在当前目录下。执行gcc会报错。所以要指定头文件所在目录。
gcc sum.c -I +绝对路径(头文件) -o myapp;
编译时指定宏
gcc sum.c -I +绝对路径(头文件) -o myapp -D DEBUG(宏)
2>. gcc的一些参数使用
1). -I (头文件路径)
2). -o (生成可执行文件)
3). -D (宏)
4). -c(生成二进制文件.o文件)
5). -g (+gdb调试信息)
6). -Wall(警告信息)
7). -O(1,2,3) 优化程序(防止冗余)
3. 静态库的制作
1>. 命名规则
1). lib + 库的名字 + .a
2). libmytest.a
2>. 制作步骤:
1). 生成对应的.o文件 -- .c --> .o -c
2). 将生成的.o文件打包 ar rcs + 静态库的名字(libMytest.a) + 生成的所有的.o
3). 调用静态库,gcc main.c lib/libmycalc.a(静态库名称) -o sum(生成的执行文件) -I include(头文件)
3>. 发布和使用静态库:
1). 发布静态库
2). 头文件
4>. 优缺点:
优点:
1)发布程序,不需要提供所需要的库。(把所需要的库封装到程序中了)
2)库的加载速度比较快。
缺点:
3)库被打包在程序中,导致库的体积比较大。
4)库发生改变,要重新编译程序。
4. 共享库的制作:
1>. 命名规则:
1). lib + 名字 + .so
2>. 制作步骤:
1). 生成与位置无关的代码 (生成与位置无关的.o)
gcc -fPIC -c *.c -I /include/(头文件)
2). 将.o打包成共享库(动态库)
gcc -shared -o libmycalc.so(生成的动态库) *.o -I /include(头文件)
3).调用动态态库,gcc main.c lib/libmycalc.so(静态库名称) -o sum(生成的执行文件) -I include(头文件)
4)ldd查看所需要的所有动态库(执行程序时)
ldd sum
5)系统调用动态库是要根据环境变量来查找的。
3>. 发布和使用共享库:
4>. 解决程序执行时动态库无法被加载的问题:
1). 放到系统的库目录 中 -- 不允许使用
2). 临时测试
环境变量: LD_LIBRARY_PATH=将动态库的路径设置给该变量(绝对路径)
将设置的值, 导入到系统环境变量中: export LD_LIBRARY_PATH
当终端关闭, 设置会失效
3). 不常用的方法(永久设置):
在家目录的 .bashrc文件(ls -a) 中添加一句话: export LD_LIBRARY_PATH=动态库目录的绝对路径
.bashrc修改完成, 需要重启终端。
4).
1. 需要找动态连接器的配置文件 -- /etc/ld.so.conf。
2. 动态库的路径写到配置文件中 -- 绝对路径/home/....。
3. 更新 -- sudo ldconfig -v(显示)。
5>. 优缺点:
优点:
1) 执行程序体积小。
2) 库更新,不需要编译程序(接口没变)。
缺点:
1) 需要把动态库也发布出去。
2) 加载速度相对较慢。