动态库和静态库

目录

一,库的概念

二、动态库的使用步骤

三、静态库的使用步骤

四,动态库和静态库的区别


一,库的概念

库: 把代码或功能模块的一种封装形式
    库里面把代码或功能模块封装,它只提供它的接口说明,以及二进制代码库。
    库用来实现一个源代码文件,调用二进制代码的一种方式。
    优点:(1)用来共享某个功能,却不用担心泄漏源代码。
         (2)运行时可以直接加载使用,且只需要一份。
         (3)方便程序的更新和维护。
         
         
    库一般又分为两种: 动态库、静态库


二、动态库的使用步骤


    1,编辑源代码
        xxx.c  功能函数的实现
        xxx.h  函数以及数据类型的说明
    2,生成动态库
        (arm-linux-)gcc  -shared  -fpic    xxx.c   -o   libxxx.so
                         动态库   与位置无关              xxx是库名
    3,生成可执行文件
        (arm-linux-)gcc  main.c  -o main -I/your/head/path  -L/your/lib/path -lxxx
        注意: 生成的main这个可执行文件,并没有包含libxxx.so的内容,只是说明了在执行的
        时候需要用到这个库
        
    4,把可执行文件main和需要用到的库都下载到开发板上去
    
        LD_LIBRARY_PATH: 是一个环境变量,以:分开,用来指定动态库的搜索路径
        环境变量: 就是所有程序的公共变量
        
        我们把动态库拷贝到动态库的搜索路径中去,或者新增一个动态库搜索路径
            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:路径
            把上面这条命令写入启动文件
            
            cp  libxxx.so  /usr/lib 
            chmod +x main 
            ./main
            


三、静态库的使用步骤


    1, 编辑源代码文件 
        a.c  b.c 
        a.h  b.h 
        
    2,把各源代码文件编译成.o文件 
        (arm-linux-)gcc  -c  a.c  -o   a.o
        (arm-linux-)gcc  -c  b.c  -o   b.o 
        
    3,用ar命令把所有的.o文件编译生成一个静态库 
        (arm-linux-)ar  -rc  libxxx.a   a.o   b.o  
                            xxx是库名
                            
    4,生成可执行文件 
        (arm-linux-)gcc  main.c  -o main -I/your/head/path  -L/your/lib/path -lxxx
        注意:生成的main这个可执行文件,已经包含了libxxx.a的内容,可以直接运行
        
    5,把main下载到开发板,直接运行
        chmod +x main 
        ./main
        

四,动态库和静态库的区别

静态库:程序在链接阶段,会将静态库的代码复制到可执行程序中。在可执行程序运行时,直接调用静态库中的代码。

动态库:程序在链接阶段,没有将动态库的代码复制到可执行程序中,仅仅将动态库的一些信息(例如动态库的名称)复制到可执行程序中。在可执行程序运行时,由系统将动态库的代码动态加载到内存中供程序调用。

                
            
                         
                         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

amireux512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值