• 静态库和动态库


    1:库是什么?

      二进制文件

      将源代码 -> 二进制格式的源代码

      加密

    2:   库制作出来之后,如何给用户使用?

      头文件

      制作出来的库

    3:静态库的制作和使用

      命名规则:libtest.a

        (1):lib

        (2):xxx-库的名字

        (3).a

      制作步骤

        (1):原材料:源代码.c .cpp

        (2):将源代码生成.o: gcc a.c b.c -c

        (3):将.o打包:

            ar rcs 静态库的名字 原材料

            ar rcs libtest.a a.o b.o

              ar - archive

            nm libtest.a 查看静态库

      库的使用

          gcc main.c -I ../include/ -L ../lib/ ltest -o app

           -L:指定库的路径

           -l:指定库的名字

    4:动态库的制作和使用.so

      命名规则

        libxxx.so

      制作步骤

        (1):将源文件生成.o

          gcc  a.c b.c -c -fpic(fPIC) 

        (2):打包成动态库

          gcc -shared a.o b.o -o libxxx.so

      库的使用

        头文件a.h

        动态库libtest.so

        参考函数声明编程测试main.c

          gcc main.c -I ./include/ -L ./lib -ltest -o app

        对于elf格式的可执行程序(file app),ldd app 查看链接的库,是由ld-linux.so*来完成的,它先后搜索elf文件的DT_RPATH路径 - 环境变量LD_LIBRARY_PATH - /etc/ld.so.cache文件列表 - /lib/ ,/usr/lib目录找到库文件后将其载入内存。

      链接不上,解决方案:

      (1): 复制到/lib 路径

      (2):使用环境变量:

          I:临时设置

            在终端: export LD_LIBRARY_PATH=动态库路径:$LD_LIBRARY_PATH

                 export LD_LIBRARY_PATH=动态库路径

          II:永久模式

            用户级别:

              ~/.bashrc

                配置完成,重启终端

                source ~/.bashrc

            系统级别:

              /etc/profile

                source /etc/profile

          III:更新/etc/ld.so.cache文件列表

            找到一个配置文件

              /etc/ld.so.conf

              把动态库的绝对路径添加到文件中

              执行命令:sudo ldconfig -v

      (3):dlopen,dlclose,dlsym

    作者:长风 Email:844064492@qq.com QQ群:607717453 Git:https://github.com/zhaohu19910409Dz 开源项目:https://github.com/OriginMEK/MEK 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 感谢您的阅读。如果觉得有用的就请各位大神高抬贵手“推荐一下”吧!你的精神支持是博主强大的写作动力。 如果觉得我的博客有意思,欢迎点击首页左上角的“+加关注”按钮关注我!
  • 相关阅读:
    零知识证明,中间人攻击,盲签名:原理和应用——三篇密码学科普文章
    json
    优化自己的编写出来的C#程序
    C++中不同的继承方式
    C语言程序编写涉及内存的问题
    面向Android的Tesseract工具
    常见Linux使用的十大问题
    Java语言链接数据库连接池配置的两种技巧
    配置数据库连接池的技巧
    PHP和Java在Web开发下相比较
  • 原文地址:https://www.cnblogs.com/zhaohu/p/8645341.html
Copyright © 2020-2023  润新知