zoukankan      html  css  js  c++  java
  • Linux 设置 LD_LIBRARY_PATH

    在Linux下,如果自己写好一个动态链接库,需要在其他程序里调用,则需要让这些程序能找到这个动态链接库,如果设置的不对,就会出现类似的错误:
    error while loading shared libraries: libmysqlclientso.so.0: cannot open shared object file: No such file or directory
    这是因为没有把动态链接库的路径放到变量LD_LIBRARY_PATH里。
    可以执行=shell命令:export LD_LIBRARY_PATH=自己的动态链接库路径:$LD_LIBRARY_PATH
    以上做法,只是临时设置变量 LD_LIBRARY_PATH ,下次开机,一切设置将不复存在;如何把这个值持续写到 LD_LIBRARY_PATH 里呢?
    我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。
    我的习惯是加到 ~/.bashrc 中,在该文件的未尾,可采用如下语句来使设置生效:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    修改完后,记得关掉当前终端并重新打开一个新的终端,从而使上面的配置生效。
    不过这个环境变量是基于shell的,也就是说只有在当前设置了的shell里才会有作用,因此每次打开新的shell运行程序不停地设置LD_LIBRARY_PATH,
    是一件非常麻烦的事情,所以我们就会想有不有什么一劳永逸地方法,使得设置之后就不用再去设置了?答案是肯定的,即在~/目录下打开.bash_profile文件,设置环境变量如下: LD_LIBRARY_PATH=dir:$LD_LIBRARY_PATH export LD_LIBRARY_PATH LD_LIBRARY_PATH 这个环境变量是大家最为熟悉的,它告诉loader:在哪些目录中可以找到共享库。可以设置多个搜索目录,这些目录之间用冒号分隔开。
    在linux下,还 提供了另外一种方式来完成同样的功能,你可以把这些目录加到/etc/ld.so.conf中,然后调用ldconfig。
    当然,这是系统范围内全局有效 的,而环境变量只对当前shell有效。按照惯例,除非你用上述方式指明,
    loader是不会在当前目录下去找共享库的,正如shell不会在当前目前找 可执行文件一样。
  • 相关阅读:
    99%的人都理解错了HTTP中GET与POST的区别
    idea 使用
    一道java算法题
    记一次jedis并发使用问题JedisException: Could not return the resource to the pool
    我珍藏的神兵利器
    记一次诡异的debug
    spring cloud config
    spring mvc 集成quartz
    git使用下
    Mongo--03 mongo副本集、备份与恢复
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/7535034.html
Copyright © 2011-2022 走看看