您的位置:首页 > 运维架构 > Linux

centOS LD 环境变量配置

2013-05-02 10:27 281 查看
  今天在执行一些后台组件运行的时候,出现了缺少部分库文件的情况。

  error while loading shared
libraries: libmysqlclient.so.16: cannot open shared object file: No
such file or directory

  
那么我把这个库下载下来,编译安装后。需要把默认的安装路径\usr\local\lib
在环境变量中添加到LD_LIBRARY_PATH中去。直接到etc下的vi profile 添加。那么我回去执行 ./组件名
&依然显示库文件找不到。

  
到另一台已经能运行该组件的机器上locate了一下libmysqlclient.so.16这个文件的位置,看到在mysql的某个子目录中存在,回来在本机上同样locate找到了文件,说明文件并没有少,那么问题就是:环境变量没配全。

   因此,vi进profile添加上

export
LD_LIBRARY_PATH=/usr/local/lib:/home/mysql/lib/mysql:/usr/local/BerkeleyDB.4.7/lib:/lib。

   但是重新执行依旧错误。这就奇怪了,没有道理。

   我们export -p,在这个时候却发现
显示出来的LD_LIBRARY_PATH竟然没有刚才添加的:/home/mysql/lib/mysql。直接在命令行模式执行export
LD_LIBRARY_PATH=":/usr/local/lib:/usr/lib/:/usr/local/lib:/home/mysql/lib/mysql:/usr/local/BerkeleyDB.4.7/lib:/lib"
后,再查看环境变量是已经添加进去的,执行组件的运行也没有问题。

  
那么总结上面的,问题在哪?就是说,直接命令行下执行export 环境变量是生效的,而vi
进去改却没有生效?google之就能发现自己2了,原来profile修改需要在执行source命令后才生效的!!!即修改过profile再执行
source /etc/profile。才是生效的。问题找到了。。。。

 

 
那么在搜的过程中看到还有另外一种添加库文件环境变量的方法:在etc/的ld.so.conf.d路径下,新建一个mysql.conf,添加内容:/home/mysql/lib/mysql。执行ldconfig。那么表示该库文件默认添加到缓存中了。这个时候去执行后台组件的运行,也会发现没有问题。

  

  

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: