解决每次打开端口找不到动态链接库的方法

本文介绍了解决Linux环境下Java调用C库时出现的UnsatisfiedLinkError问题的方法。通过设置LD_LIBRARY_PATH环境变量,并将其持久化保存在用户的.bashrc文件中,确保系统能够正确加载所需的.so动态链接库。

在 Linux 下,如果你写好了自己的动态链接库,需要在其它程序里调用,则需要让这些程序能找到这些动态链接库。

由于最近要用到java调c,,将c文件打包成.so文件,然后供java调用,可是经常会出现如下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no knn in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at test.<clinit>(test.java:34)
Could not find the main class: test. Program will exit.

原因是找不到.so文件,需要使用命令:

LD_LIBRARY_PATH=.

export LD_LIBRARY_PATH

才能找到在当前目录生成的库

所以需要把动态链接库的路径(例如 /usr/local/lib 我的是当前路径.)放到变量LD_LIBRARY_PATH 里

但是不方便的是,每次开机或者重新打开shell窗口的时候都要使用上面的命令一遍,因为以上做法,只是临时设置变量 LD_LIBRARY_PATH

所以需要把这个值持续写到 LD_LIBRARY_PATH 里。

我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。我的习惯是加到 ~/.bashrc 中,在该文件的未尾,可采用如下语句来使设置生效:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

修改完后,早终端运行source ~/.bashrc 就行了~~~

记得关掉当前终端并重新打开一个新的终端,从而使上面的配置生效。

 

转载于:https://www.cnblogs.com/luofeifly/archive/2013/03/19/2969528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值