ubuntu中LD_LIBRARY_PATH失效的问题

解决ubuntu 8.10以上版本中LD_LIBRARY_PATH失效的问题

参考:https://bugs.launchpad.net/ubuntu/+bug/366728

很多用linux写程序的人在经历了从ubuntu 8.10版本升级之后都会发现这样的问题,就是原来在旧版本系
统中设置的LD_LIBRARY_PATH环境变量,在新的版本中就失效了(该问题发生在 9.04、9.10中,不知是否
会发生在今年4月即将发布的10.04中)。比如你是在/etc/profile这个文件中设置的 LD_LIBRARY_PATH
环境变量,然后必须在命令行中输入"source /etc/profile",LD_LIBRARY_PATH环境变量才会生效。

这对我们写程序的人来说是一个大问题。有人说这是ubuntu的一个bug,也有人说这是为了安全考虑而进行
的设计,说来说去,我们得找到一个可行的办法来解决这个问题。

[方法1]
有人建议在 ~/.bashrc中设置LD_LIBRARY_PATH,但是这样的话达不到在gnome中的全局效果,只是在终
端中有用。

[方法2]
该方法可以达到在genome中到全局效果,该方法就是不设置LD_LIBRARY_PATH环境变量,而是使用
/etc/ld.so.conf.d/*.conf来配置你的链接库文件。

举个例子,我编译了BALL之后,生成的链接库的地址是:
/home/zzm/ProgramFiles/BALL/BALL-1.2/lib/Linux-i386-g++_4.1.3
有两个库文件: libBALL.so 和 libVIEW.so .

下面是我的配置过程:
zzm@zzm-desktop:~$echo "/home/zzm/ProgramFiles/BALL/BALL-1.2/lib/Linux-i386-g++_4.1.3" | sudo tee /etc/ld.so.conf.d/BALL-lib.conf
zzm@zzm-desktop:~$ sudo ldconfig -v

这样,你的链接库文件就被加入了系统的默认链接库配置中。如果日后需要卸载这个库的话,删除刚才建立
的配置文件,再次执行"sudo ldconfig -v" 命令即可。

[方法3]
运行下面到命令可以很好到达到目的:

zzm@zzm-desktop:~$ echo STARTUP=\"/usr/bin/env LD_LIBRARY_PATH=\${LD_LIBRARY_PATH} \${STARTUP}\" | sudo tee /etc/X11/Xsession.d/90preserve_ld_library_path
zzm@zzm-desktop:~$ sudo reboot

其实关于LD_LIBRARY_PATH,它只是在genome里面被"和谐"掉了,我们需要重新在genome里面"审视"并
重视它的存在!

 

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

在/etc/ld.so.conf里添加库文件所在的目录路径,然后执行ldconfig命令

你可能感兴趣的:(linux,ubuntu,Path,library,终端)