解决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/BALL1.2/lib/Linuxi386g++4.1.3|sudotee/etc/ld.so.conf.d/BALLlib.confzzm@zzmdesktop:  sudo ldconfig -v

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

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

zzm@zzm-desktop:~ echoSTARTUP=\”/usr/bin/envLDLIBRARYPATH=$LDLIBRARYPATH$STARTUP\”|sudotee/etc/X11/Xsession.d/90preserveldlibrarypathzzm@zzmdesktop:  sudo reboot

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


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

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:23 天前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐