• linux下,一些关于动态库的问题:


     

     

    程序运行是加载动态库的几种方法:

    第一种,通过ldconfig命令
        ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令它,ldconfig命令通常在系统启动时运行,而当一个用户安装我新的动态库时,就需要手工运行这个命令。ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.
        这里面涉及到的关键内容有命令:ldconfig,配置文件目录:/etc/ld.so.conf.d,配置文件在/etc/ld.so.conf内容由用户编辑,缓冲文件/etc/ld.so.cache。

    第二种,通过LD_LIBRARY_PATH环境变量
    可以通过在.bashrc或者.cshrc中配置该环境变量,LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开.

    第三种,通过编译选项-Wl, -rpath指定动态搜索的路径
    -Wl选项告诉编译器将后面的参数传递给链接器。

     

    当我们要想加入一个动态库时,可以在 /etc/ld.so.conf.d/ 目录下建一个*.conf文件(为什么在这里面建呢,因为吧,/etc/ld.so.conf 文件中已经包含了这一路径,你可以打开看看哦, include /etc/ld.so.conf.d/*.conf)。当然也在其它目录下建立*.conf文件,不过建完以后记得在 /etc/ld.so.conf 文件中加入目录。

    还可以在变量LD_LIBRARY_PATH 中,加入动态库目录,我一般都会在 ~/.bashrc 中写入。

     

     

     

     

     

     

     

     

     

     

     

     

    参考文献:

    http://blog.csdn.net/apn172/article/details/8868968

    http://www.linuxidc.com/Linux/2015-07/120192.htm

  • 相关阅读:
    pyinstaller 打包后无法运行
    Android Uiautomator2 gradlew 坑
    JNDI 在 J2EE 中的角色
    23种设计模式
    Struts2工作原理
    SpringMVC工作原理
    堆内存设置
    安装和使用 memcached
    SQL面试题及答案
    30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
  • 原文地址:https://www.cnblogs.com/yinheyi/p/5908431.html
Copyright © 2020-2023  润新知