当前位置: 技术问答>linux和unix
小问题却困恼我许久-关于LD_LIBRARY_PATH环境变量
来源: 互联网 发布时间:2016-08-04
本文导语: 我的主机环境是AIX, 编译器 xlC_r 7.0 数据库是oracle 10g SHELL 用的是ksh 在$HOME目录下.profile文件里设置了LD_LIBRARY_PATH export LD_LIBRARY_PATH=$OB_RUN/lib export LD_LIBRARY_PATH=$ORACLE_HOME/lib32:.:/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=...
我的主机环境是AIX, 编译器 xlC_r 7.0 数据库是oracle 10g SHELL 用的是ksh
在$HOME目录下.profile文件里设置了LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$OB_RUN/lib
export LD_LIBRARY_PATH=$ORACLE_HOME/lib32:.:/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/rdbms/lib:/usr/lib:/usr/local/lib:$TUXDIR/lib:$LD_LIBRARY_PATH
export LIBPATH=$LD_LIBRARY_PATH
用户登陆后用env命令是可以看到LD_LIBRARY_PATH的变量值的。
在test.sh脚本里,也可以显示LD_LIBRARY_PATH的变量值
echo $LD_LIBRARY_PATH
但在makefile里面,就是无法显示LD_LIBRARY_PATH的变量值
makefile的内容如下:
do:
echo $LD_LIBRARY_PATH
实在无法明白,这是何原因。在网上已经找过需多文章谈论LD_LIBRARY_PATH变量的设置问题,网上只说了不好把LD_LIBRARY_PATH设置为全局变量。但还是不清楚它的原因。希望高手能指导下。
在$HOME目录下.profile文件里设置了LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$OB_RUN/lib
export LD_LIBRARY_PATH=$ORACLE_HOME/lib32:.:/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/rdbms/lib:/usr/lib:/usr/local/lib:$TUXDIR/lib:$LD_LIBRARY_PATH
export LIBPATH=$LD_LIBRARY_PATH
用户登陆后用env命令是可以看到LD_LIBRARY_PATH的变量值的。
在test.sh脚本里,也可以显示LD_LIBRARY_PATH的变量值
echo $LD_LIBRARY_PATH
但在makefile里面,就是无法显示LD_LIBRARY_PATH的变量值
makefile的内容如下:
do:
echo $LD_LIBRARY_PATH
实在无法明白,这是何原因。在网上已经找过需多文章谈论LD_LIBRARY_PATH变量的设置问题,网上只说了不好把LD_LIBRARY_PATH设置为全局变量。但还是不清楚它的原因。希望高手能指导下。
|
你是不是在 ACE 环境下,如果是的话,
貌似先要设置 ACE_ROOT ...
貌似先要设置 ACE_ROOT ...
|
makefile中可以定义其自己的变量,我现在怀疑的是,能否在makefile中使用环境变量,像你这样使用环境变量。在程序链接的过程中,make会找L/you_lib_path,而编译生成可执行文件之后,程序会自动在环境变量LD_LIBARAY_PATH中指定的路径中搜索所需的库文件。与链接时是否能够使用LD_LIBARAY_PATH变量没有什么关系。
|
我在aix5下试了下,没发现你同样的问题
不过要用$(LD_LIBRARY_PATH)
否则显示
D_LIBRARY_PATH
如果你实在搞不定的话,可以用一个脚本来执行命令,在脚本里可以设置环境,这个应急用很好
按道理说make的环境是继承了当前环境的,所以你的问题听起来就比较怪
不过要用$(LD_LIBRARY_PATH)
否则显示
D_LIBRARY_PATH
如果你实在搞不定的话,可以用一个脚本来执行命令,在脚本里可以设置环境,这个应急用很好
按道理说make的环境是继承了当前环境的,所以你的问题听起来就比较怪
|
第一个问题应该是 echo $(LD_LIBRARY_PATH)吧
第二个问题原因是你在你的电脑里设置好了LD_LIBRARY_PATH后你可以成功编译你的程序,而如果你的程序放到了另一台机器,你就也需要重新配置这个变量,才可以让你的程序正常编译,这样就不方便了。
第二个问题原因是你在你的电脑里设置好了LD_LIBRARY_PATH后你可以成功编译你的程序,而如果你的程序放到了另一台机器,你就也需要重新配置这个变量,才可以让你的程序正常编译,这样就不方便了。
|
echo $(LD_LIBRARY_PATH) 看看
|
echo ${LD_LIBRARY_PATH}