梦想起航

人生没有等出来的美丽,只有走出来的辉煌!~

导航

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

在 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 就行了~~~

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

 

posted on 2013-03-19 16:58  梦想hust起航  阅读(664)  评论(0编辑  收藏  举报