JNI调用时so链接库文件的路径设置

本文主要介绍了在JNI程序中,如何设置动态链接库so的搜索路径。当程序运行时,系统会按照特定顺序查找so库,包括/lib和/usr/lib目录、LD_LIBRARY_PATH环境变量以及/etc/ld.so.conf指定的路径。重点讲述了通过编辑/etc/ld.so.conf.d/下的配置文件,并使用ldconfig命令更新库缓存来确保JNI调用能正确找到库文件的方法。这对于解决JNI或Linux程序调用so库时的路径问题具有较高的灵活性和通用性。
摘要由CSDN通过智能技术生成

最近在做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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值