第三天

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) 加载速度相对较慢。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值