zoukankan      html  css  js  c++  java
  • linux下的动态库

    也就是windows下的.dll

    1.命名

    2.制作

    (1)生成与位置无关的.o文件

    gcc -fPIC -c *.c -I ../include  

    (2)将.o打包成动态库(或者叫共享库)

    gcc -shared -o libmytest.so *.o -I ../include

    3.发布和使用

    (1)gcc main.c lib/libmytest.so -o app -I include

    (2)gcc main.c -L ./lib -l mytest -o app

    4.如何解决动态库无法加载得问题

    ldd //查看可执行程序依赖所有得库

    echo $PATH

    --解决1:把该动态库放入总目录下得lib下(不建议这样做,万一与os相关得某个动态库重名就尴尬了)

    --解决2:把该库制定该LD_LIBRARY_PATH这个环境变量(临时用)

    echo $LD_LIBRARY_PATH

    赋值:export LD_LIBRARY_PATH=./lib

    --解决3:打开家目录下得.bashrc

    G   //光标移动到最后一行

    加上export LD_LIBRARY_PATH=/home/itcast/3day/lib           //动态库得绝对路径

    关掉终端,然后才会生效

    --解决4:

    (1):需要找到动态链接器得配置文件

    cd /etc

    ls

    ls -l ld.so.conf

    sudo vi ld.so.conf

    (2):动态库的路径写到配置文件中

    然后加上动态库的绝对路径

    (3)更新:sudo  ldconfig -v

    5.优缺点

    只有在程序执行的时候才会调用动态库

    优点:执行程序体积小,动态库更新了不用重新编译程序

    缺点:需要把动态库提供给用户,加载速度慢

  • 相关阅读:
    OS-lab4
    OS-lab3
    OS-lab2
    OS-lab1
    OO第四单元总结
    OO第三单元总结
    OO第二单元总结
    HTTP_POST
    实习日志1(2020.7.27-2020.9.31)
    Web app ------ 从Servlet读取Json数据并显示,生成历史数据曲线图
  • 原文地址:https://www.cnblogs.com/luoshiyong/p/10223026.html
Copyright © 2011-2022 走看看