在linux下设置共享库路径

来源:互联网 发布:剑网3菊花插件数据 编辑:程序博客网 时间:2024/06/14 09:47

 

 

1定义

Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找)

移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,这时可以将这些目录设置到LD_LIBRARY_PATH中

2示例

当执行函数动态链接.so时,如果此文件不在缺省目录下‘/lib’ and ‘/usr/lib’.

那么就需要指定环境变量LD_LIBRARY_PATH
假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式:
LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH.(newdirs是新的路径串)
(注:GNU系统可以自动添加在 /etc/ld.so.conf文件中来实现环境变量的设置)
 

3设置方法

由于linux的shell版本不一样,各个版本的语法有差异。兼容性不好。

3.1:

以下是bash的设置方法。

在linux下可以用export命令来设置这个值,比如

在linux终端下输入:export LD_LIBRARY_PATH=/opt/au1200_rm/build_tools/bin: $LD_LIBRARY_PATH:
然后再输入:export
即会显示是否设置正确
export方式在重启后失效,所以也可以用 vim /etc/bashrc ,修改其中的LD_LIBRARY_PATH变量。
例如:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/au1200_rm/build_tools/bin
3.2:
以下是csh的设置方法
setenv  LD_LIBRARY_PATH   $LD_LIBRARY_PATH:/opt/au1200_rm/build_tools/bin
 
 
4:用列
 

#!/bin/bash
#set the path of lib for tool

if [ $SHELL = "/bin/bash" ] ; then
 echo "BASH" 
fi

-------------------------------------------------------------------------

#!/bin/csh

if ( "$SHELL" == "/bin/csh" )  then
    setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:./
endif

 

5:总结,各个版本的shell的语法有差异。不兼容。一般情况下。列:在bash上执行用csh语法写的脚本会出错。
但是有个神奇的用法:可以在bash脚本上调用并执行用csh语法写的脚本。反之,也可。
列:
 

#!/bin/bash
#set the path of lib for gentdefdatatool

if [ $SHELL = "/bin/bash" ] ; then
   echo "BASH" 

   ./.debugcsh 

   echo "CSH  END"
 fi

 #.debugcsh :是用csh语法写的脚本。

 
 
 
 
0 0
原创粉丝点击