• Linux 当前目录动态链接库找不到问题【转载】


    linux的excutable在执行的时候缺省是先搜索/lib和/usr/lib这两个目录,然后按照ld.so.conf里面的配置搜索绝对路径,linux缺省是不会在当前目录搜索动态库的。windows加载动态库的时候,缺省是首先加载本地目录下的动态库,然后再搜索windows/system和windows/system32目录。

    windows的动态库搜索顺序,虽然有可能会造成潜在的混乱,但是对于开发和测试无疑是比较方便的,尤其是debug和release版本的动态库需要经常切换进行测试的时候。linux的动态库搜索顺序虽然可以说成是比较严谨,但是相对来说也比较呆板,有时候会造成不便。

    ldd LB //查看进程依赖的动态库

    其实,linux也可以支持“加载当前目录的动态库”。只要设置合适的环境变量LD_LIBRARY_PATH就可以了。设置方法有以下三种: 

    1、临时修改,log out之后就失效 
    在terminal中执行:export LD_LIBRARY_PATH=./ 

    2、让当前帐号以后都优先加载当前目录的动态库 
    在Red Hat中修改~/.bash_profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

    (而在ubuntu中要修改的文件的名称是~/.profile)

    3、让所有帐号从此都优先加载当前目录的动态库 
    修改/etc/profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH  
    PS:修改ld.so.conf不能达到我们的目的,因为ld.so.conf只支持绝对路径。

    还有就是修改了之后,不要使用 sudo ./XXX 来运行,这样还是找不到的, 直接 ./ XXX 运行就可以了,记得给整个文件夹可运行权限 chmod +x 

    原文请访问 https://www.cnblogs.com/vczh/p/5809069.html

  • 相关阅读:
    51 Nod 1086 多重背包问题(单调队列优化)
    51 Nod 1086 多重背包问题(二进制优化)
    51 Nod 1085 01背包问题
    poj 2559 Largest Rectangle(单调栈)
    51 Nod 1089 最长回文子串(Manacher算法)
    51 Nod N的阶乘的长度 (斯特林近似)
    51 Nod 1134 最长递增子序列(经典问题回顾)
    51 Nod 1020 逆序排列
    PCA-主成分分析(Principal components analysis)
    Python中cPickle
  • 原文地址:https://www.cnblogs.com/hbrw/p/9123147.html
Copyright © 2020-2023  润新知