在很多情况下没有正确设置LD_LIBRARY_PATH时,程序运行时往往会报出以下错误:
error while loading shared libraries: xxx.so.0: cannot open shared object file: No such file or directory
当然也不排除确实缺少xxx.so.0库文件,可以使用find、locate等命令去确认当前PC中是否存在该库文件。其次,检查环境变量。
LD_LIBRARY_PATH: 动态库的查找路径
设置:
方法一: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是登出后就失效
方法二: 修改系统级别的/etc/profile或者用户级别的/.bashrc或者/.profile_profile
1. 在其中添加例如export LD_LIBRARY_PATH=/opt/ActiveP/lib:$LD_LIBRARY_PATH
2. source .bashrc (Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)
方法三:这个没有修改LD_LIBRARY_PATH但是效果是一样的实现动态库的查找,
1. /etc/ld.so.conf下面加一行/usr/local/mysql/lib
2. 保存过后ldconfig一下(ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.)
方法三设置稍微麻烦,好处是比较不受用户的限制。
题外话:linux系统中 ~ 的意义、当前用户生效与全局生效的区别
~就是当前用户的家目录。若当前登录的用户名为xiaobai, ~就代表 /home/xiaobai。
cd ~就相当于cd /home/xiaobai。
当修改~目录下的bashrc或profile文件时,往往只针对当前用户生效。不影响其他用户。
当修改/etc/profile时,是针对所有用户都生效。修改完毕之后,往往需要source一下刚刚修改后的文件。
PATH: 可执行程序的查找路径
查看当前环境变量:
echo $PATH
设置:
方法一: export PATH=PATH:/XXX 但是登出后就失效。
方法二:修改/.bashrc或/.bash_profile或系统级别的/etc/profile
1. 在其中添加例如export PATH=/opt/ActivePython-2.7/bin:$PATH
2. source .bashrc (Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录)。