红联Linux门户
Linux帮助

在linux下设置共享库路径

发布时间:2015-10-24 10:57:59来源:linux网站作者:cradle08

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语法写的脚本。


关于Ubuntu添加共享库路径:http://www.linuxdiyf.com/linux/5678.html

Linux共享库路径配置:http://www.linuxdiyf.com/linux/1191.html