1. vim编辑器的使用
2. gcc编译器
3. 静态库的制作 -- lib
4. 动态库的制作    -- dll

vi -- vim
vim是从vi发展过来的一款文本编辑器
vi a.txt
前提: 安装了vim软件

工作模式:
    1. 命令模式 -- 打开文件之后, 默认进入命令模式
    2. 编辑模式 -- 需要输入一些命令, 切换到编辑模式
    3. 末行模式 -- 在末行模式下可以输入一些命令

1. vim编辑器的使用

命令模式下的操作:
        1>. 光标的移动
            H  J  K  L
            前 下 上 后
            行首: 0
            行尾: $
            文件开始位置: gg
            文件末尾: G
            行跳转: 300G
        2>. 删除操作
                删除光标后边的字符: x
                删除光标前边的字符: X
                删除光标单词后面的: dw  (光标移动到单词的开始位置, 否只能删除一部分)
                删除光标到行首的字符串: d0
                删除光标到行尾的字符串: D(d$)
                删除光标当前行: dd
                删除多行: ndd (n -- 自然数)
        3>. 撤销操作
                    撤销: u
                    反撤销: ctrl + r
        4>. 复制粘贴
                复制: yy
                复制多行: nyy
                
                粘贴: p (光标所在行的下一行)
                粘贴: P (光标所在行)
                
                剪切 == 删除
        5>. 可视模式
                切换到可是模式: v
                选择内容: hjkl
                操作: 复制: y   删除: d
        6>. 查找操作
                1). /hello(向下查找,到尾部返回头部)
                2). ?hello(向上查找,到头部返回尾部)
                3). # -- 把光标移动到查找的单词身上 , 按#
                遍历时候的快捷键: N/n
        7>. r: 替换当前字符
        
        缩进:
                向右: >>
                向左: <<
        8>. 查看man文档 可以指定章节
            3 shift + k
    文本模式下的操作:
        切换到文本模式:
            a -- 在光标所在位置的后边插入
            A -- 在当前行的尾部插入
            
            i -- 在光标所在位置的前边插入
            I -- 在光标所在行的行首插入
            
            o -- 在光标所在行的下边开辟一个新的行
            O -- 在光标所在行的上边开辟一个新的行
            
            s -- 删除光标后边的字符
            S -- 删除光标所在的行
    末行模式下的操作:
        :
        行跳转  :123 -> 跳转到第123行
        替换一行  :s/abc/123 -> 将当前行中的第一个abc替换为123
                  :s/abc/123/g -> 将当前行中的abc全部替换为123
        替换全部  :%s/abc/123 -> 将所有行中的第一个abc替换为123
                  :%s/abc/123/g -> 将所有行中的abc全部替换为123
                  :10,30s/abc/123/g -> 将10-30行中的abc全部替换为123
        执行shell命令  末行模式里输入!,后面跟命令
        查找  :s/tom
        保存退出:
                q: 退出
                q!: 退出不保存
                w: 保存
                wq: 保存退出
                x: == wq
    在命令模式下保存退出: ZZ
    末行模式分屏操作:
        1>. 水平分屏    :sp
        2>. 垂直分屏    :vsp
        3>. 命令:sp(vsp) + 文件名 水平或垂直拆分窗口显示两个不同的文件
        ctrl+ww 切换两个屏幕
        命令 :wq 保存并退出光标所在的屏幕
        命令 :wqall 保存并退出所有屏幕

2. gcc编译器

1>. gcc工作流程: gcc hello.c -o hello
            预处理器cpp:头文件展开,宏替换,注释去掉
                gcc -E hello.c -o hello.i
            编译器gcc:C文件变成汇编文件
                gcc -S hello.i -o hello.s
            汇编器as:汇编文件变成二进制目标文件
                gcc -c hello.s -o hello.o
            链接器ld:将函数库组合到目标文件
                gcc hello.o -o hello
        2>. gcc的一些参数使用
                1). -I 指定头文件目录
                2). -c 只编译子程序
                3). -o 产生指定名字的目标文件
                4). -D 编译时定义宏
                5). -g 包含调试信息(gdb调试的时候必须加此参数)
                6). -Wall 提示更多警告信息
                7). -O 编译优化0到3 级别

3. 静态库的制作

1>. 命名规则
                1). lib + 库的名字 + .a
                2). libmytest.a
        2>. 制作步骤:
                1). 生成对应的.o文件 -- .c --> .o   -c
                2). 将生成的.o文件打包  ar rcs + 静态库的名字(libMytest.a) + 生成的所有的.o
        3>. 发布和使用静态库:
                1). 发布静态库
                    生成的静态库需要跟对应的头文件同时发布
                2). 头文件
                    gcc main.c lib/libMytest.a -I./ -o app
                    gcc + 源文件 + -L 静态库路径 + -l静态库名 + -I头文件目录 + -o 可执行文件名
                    gcc main.c -L./ -l Mytest -I./ -o app
                3). 打包到程序的最小单位是.o
            nm libMytest.a  可以查看静态库包含的内容 (可执行文件也可以查看)
        4>. 优缺点:
            优点:寻址方便,速度快
                  库被打包到可执行程序中,直接发布可执行程序即可使用
            缺点:静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。
                  如果静态库改变了,那么你的程序必须重新编译。

4. 共享库的制作:(动态库)

1>. 命名规则:
                1). lib + 名字 + .so
        2>. 制作步骤:
                1). 生成与位置无关的代码 (生成与位置无关的.o)参数 -fPIC 表示生成与位置无关代码 执行完毕后生成一系列的 .o 文件
                    gcc -fPIC -c a.c b.c c.c
                2). 将.o打包成共享库(动态库)
                    gcc -shared -o libMytest.so a.o b.o c.o -I头文件目录
        3>. 发布和使用共享库:
            gcc main.c -L./ -l Mytest -I  include -o app
        4>. 解决程序执行时动态库无法被加载的问题:
                ldd app 查询可执行程序在执行时所需依赖的所有共享库
                发现没有给动态链接器(ld-linux.so.2)指定好动态库 libmytest.so 的路径
                1). 复制到系统的库目录/lib/中 -- 不允许使用
                2). 临时测试
                            环境变量: LD_LIBRARY_PATH=将动态库的路径设置给该变量
                            将设置的值, 导入到系统环境变量中: export LD_LIBRARY_PATH
                            当终端关闭, 设置会失效
                3).    不常用的方法(永久设置):
                            在家目录的 .bashrc文件 中添加一句话: export LD_LIBRARY_PATH=动态库目录的绝对路径
                            .bashrc修改完成, 需要重启终端
                4).    
                    1. 需要找动态连接器的配置文件 --  sudo vi /etc/ld.so.conf
                    2. 动态库的路径写到配置文件中 -- 绝对路径
                    3. 更新 -- sudo ldconfig -v(输出一些信息)
        5>. 优缺点:
            优点:节省内存(共享)
                  易于更新(动态链接)停止运行程序 使用新库覆盖旧库(保证新旧库名称一致,接口一致) “接口” 重新启动程序。
            缺点:延时绑定,速度略慢
                  发布时需要将动态库发布给用户

Linux学习笔记-基本操作3的更多相关文章

  1. Linux学习笔记-基本操作5

    1. Linux文件操作相关函数 stat函数 :获取文件属性(从inode上获取)                返回值:                    成功:0               ...

  2. Linux学习笔记-基本操作1

    1>. 命令解析器2>. Linux快捷键3>. Linux 系统目录结构4>. 用户目录5>. 文件和目录操作6>. 文件和目录的属性7>. 文件权限, 用 ...

  3. Linux学习笔记-基本操作4

    1. gdb调试2. makefile的编写3. 系统IO函数 1. gdb调试:        1. 启动gdb + 可执行文件        2. 查看代码:                l== ...

  4. Linux学习笔记-基本操作2

    1. 压缩包管理2. 进程管理3. 网路管理4. ftp服务器搭建5. nfs服务器搭建6. ssh服务器7. scp命令8. 其他命令9. 关机重启 1. 压缩包管理 1>. 屌丝版:不能对目 ...

  5. 20155303狄惟佳预备作业三Linux学习笔记

    20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...

  6. Linux 学习笔记 1 使用最小的系统,从分区安装系统开始

    我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念, 我们不说最细的知识,只求了解这个过程,那直接步入正题,开始第一节的学习 ...

  7. Linux 学习笔记 5 文件的下载、压缩、解压、初步认识yum

    写在前面 上节我们通过简单的几组命令,已经完全的实现了文件的移动.删除.更名.以及复制,我们最常用的基本玩法,本节将带着大家学习压缩.解压的相关步骤. Linux 学习笔记 4 创建.复制.移动.文件 ...

  8. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  9. linux学习笔记2-linux的常用命令

    第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...

随机推荐

  1. docker使用自定义镜像zabbix服务

    一.关闭firewall,永久关闭,使用iptables防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firew ...

  2. centos6 搭建nginx实现负载均衡

    一.安装nginx 1)准备2台服务器,环境一样,同时执行 rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.r ...

  3. BP神经网络测试MNIST记录

    约定: 所有的初始化权值范围,如下,就是说更换激活函数的情况,没有过大的调整初始权重. if(randomMode==1): numpy.random.seed(seedWih) self.wih = ...

  4. jrebel热部署

    一,JRebel 插件 获取与安装 1,JRebel 官网下载地址https://zeroturnaround.com/software/jrebel/download/#!/free-trial P ...

  5. 【慕课网实战】Spark Streaming实时流处理项目实战笔记九之铭文升级版

    铭文一级: 核心概念:StreamingContext def this(sparkContext: SparkContext, batchDuration: Duration) = { this(s ...

  6. ubuntu server 在 virtualbox中安装增强包

    原文链接:http://luzl.iteye.com/blog/1010597 首先说下增强包能干什么,在desktop下面有了增强包桌面就能变大了,在server下也是类似,那个黑屏就能变大了,还有 ...

  7. HBase thrift2 TIOError

    如果HBase thrift2报:"TIOError exception: Default TException", 这个可能是因为操作的表不存在,不一定是网络或磁盘操作异常. H ...

  8. spring mvc使用ModelAndView时发生No request handling method with name '方法 名' in class [类名]的错误

    我日,下午关于标题错误查了好久,网上啥说法都有, 后来发现是ModelAndView的路径引错了 正确路径应该为: import org.springframework.web.servlet.Mod ...

  9. web-day5

    第5章WEB05- BootStrap篇 今日任务 使用JQuery完成表单校验 使用BootStrap制作一个响应式页面 使用BootStrap制作网站首页 教学导航 教学目标 掌握什么是响应式及响 ...

  10. spring父子Ioc容器的关系

    在网上找了一下,没有直接解说ioc父子容器关系的文章,所以大概看了下代码,自己写下吧,写俩行做个笔记. 1. 在进行dean的注册的时候,父容器和子容器是互不干扰的,各自注册自己的 2. 在实例化的时 ...