24.静态库和动态库

一、库的基本概念
1.库是什么?
(1)库是二进制文件。
(2)可将源代码->二进制格式的源代码
源代码:.c/.cpp
(3)起到加密作用
2.库制作出来之后,如何给用户使用?
(1)头文件
(2)制作出来的库


二、静态库的制作和使用
(1)命名规则:libxxx.a
    lib
    xxx--库的名字
    .a
(2)制作步骤:
    源材料:源代码.c/.cpp
    将.c文件生成.o
    将.o打包
ar rcs 静态库的名字 源材料
ar rcs libxxx.a a.o b.o
   ar--archive
(3)库的使用
    gcc test.c -I 指定头文件的路径 -L 指定库的路径 -l制定库的名字(去掉lib和.a)
    -L:后接指定库的路径
    -l:指定库的名字(去掉lib和.a)
    例如:gcc test.c -I ./ -L ./lib -lxxx -o app


三、动态库的制作和使用
(1)命名规则:libxxx.so
    lib
    xxx--库的名字
    .so
(2)制作步骤
    将源文件生成.o文件
    gcc a.c b.c -c -fpic(fPIC)
(3)打包
    gcc -shared a.o b.o -o libxxx.so
(4)库的使用
    头文件a.h
    动态库 libxxx.so
    参考函数声明编程测试程序main.c
    gcc main.c -I 头文件所在目录 -L 动态库所在目录 -lxxx -o app
(5)动态库无法加载:
    使用环境变量:
        临时设置:
   (在终端)export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
        永久设置:
            用户级别:
            ~/.bashrc --> export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
             - 重启终端
             - source ~/.bashrc
            系统级别:
            /etc/profile --> export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH
             - 重启PC
             - source /etc/profile
    /etc/ld.so.conf文件列表:
        找到一个配置文件:
            /etc/ld.so.conf
            把动态库的绝对路径添加到文件中
        执行一个命令:
            sudo ldconfig -v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值