最近在做JNI程序时,用到了相当于windows环境下的dll--动态链接库的so库,即linux环境下,程序执行时所需要函数链接库。
一般来说的so库路径寻找包括编译时和运行时,因为前边提到的是JNI调用,则此处说的路径寻找为运行时候的寻找过程。
寻找的路径顺序一般为:
(1)/lib,或是/usr/lib下寻找。
(2)在LD_LIBRARY_PATH环境变量中所设定的路径
(3)的/etc/ld.so.conf(或/usr/local/etc/ld.so.conf,视权限而定)中所指定的路径,一般放在/etc/ld.so.conf中就可以了。如果看里边的原始shell脚本,其实它是加载/etc/ld.so.conf.d/目录下的所有文本型的路径指向文件。即将所要寻找的so或是其它资源文本放在这个位置,就可以在JNI或是linux本地程序调用时被找到。
由于前两种比较好理解和设置,JNI调用的动态资源生成时候多采用第3种方式,故本篇文章主要是介绍第3种方式时候的注意细节。
1、可以参考原有的ld.so.conf.d目录下的文本文件中对于路径的指定,实际是将so库所在的自定义的路径的绝对位置添加进去即可,如/usr/self/cluster/lib之类的路径即可。
2、配置文件放到ld.so.conf.d目录之后,如果不采用手动方式添加进linux自带的库cache中,该文件所指向的库文件依然没法被使用。有时重启机器依然不会被自动加载,所以往往建议要手动加载系统的库cache