解决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”|sudotee/etc/ld.so.conf.d/BALL−lib.confzzm@zzm−desktop:
sudo ldconfig -v
这样,你的链接库文件就被加入了系统的默认链接库配置中。如果日后需要卸载这个库的话,删除刚才建立
的配置文件,再次执行”sudo ldconfig -v” 命令即可。
[方法3]
运行下面到命令可以很好到达到目的:
zzm@zzm-desktop:~ echoSTARTUP=\”/usr/bin/envLDLIBRARYPATH=$LDLIBRARYPATH$STARTUP\”|sudotee/etc/X11/Xsession.d/90preserveldlibrarypathzzm@zzm−desktop: sudo reboot
其实关于LD_LIBRARY_PATH,它只是在genome里面被”和谐”掉了,我们需要重新在genome里面”审视”并
重视它的存在!
在/etc/ld.so.conf里添加库文件所在的目录路径,然后执行ldconfig命令