24.静态库和动态库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/disappear_XueChao/article/details/80344173
一、库的基本概念
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
阅读更多
换一批

没有更多推荐了,返回首页