Linux环境变量LD_LIBRARY_PATH(指定share libraries)

        今天在使用自己编译的MySQL时遇到了一个问题:使用自己编译的这个MySQL的mysql工具连接实例时老是报错*clientmsyql.so文件找不到,当时的连接方式为./basedir/bin/mysql ... 这样肯定就是使用自己编译的这个MySQL自带的mysql工具了。去basedir 的lib目录里面看了下明明存在那些*.so文件,那为什么会提示找不到呢?这个可能是编译的问题了吧(自己也不太清楚具体哪个地方没弄好,别人编译的),总之就是他不会去basedir的lib目录里面去找这些*.so文件。为了验证这点,直接使用mysql连接实例(因为机器上还装了其他版本的mysql,已经在环境变量PATH里面设置)可以成功。

        那么有什么方式可以显示的告诉mysql去哪里找这些*.so文件么?起初我很2的在PATH里面制定了这些so文件的路径,结果发现不起作用,后来才知道PATH这个环境变量是对可执行文件起作用的。真正要用的是LD_LIBRARY_PATH这个环境变量。它才是linux中显示的指定去找share libraries文件的环境变量!查了下这个环境变量的用法,发现这篇文章写得比较实在:我们应该尽量少用这个环境变量,它的主要目的不是用来给一个需要稳定运行的程序显示的指定它要去哪里找它需要的share libraries,而是用来测试一些新的share libraries,比如你新开发了一些share libraries,你不想急着覆盖旧的,那么你可以临时用LD_LIBRARY_PATH指定这些新share libraries的路径。为什么说不建议给一个长期需要运行程序用LD_LIBRARY_PATH来指定share libraries呢?因为这个不是很安全吧,哪天无意被别人修改了那不就惨了,因为你要知道LD_LIBRARY_PATH是一个全局的环境变量,别的程序也可以用的。


附:

linux中怎么更改环境变量?比如PATH=${PATH}:/path,个人喜欢用${}这样应该是最安全的,防止$解释的时候将后面的一长串全部当做变量名。

你可能感兴趣的:(linux,mysql,测试,Path,工具,library)