2009-02-11 71 views
4

我已经成功地进入一个Linux机器尝试热键图书馆this answer.java.lang.UnsatisfiedLinkError中在Linux中

建议我编译示例代码,现在我运行该程序,我有以下消息:

 
[[email protected] jxgrabkey-0.2.1_i386]$ java -classpath lib/JXGrabKey.jar:Example JXGrabKeyTest 

Exception in thread "main" **java.lang.UnsatisfiedLinkError:** /home/oracle/javasample/jxgrabkey-0.2.1_i386/lib/libJXGrabKey.so: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/oracle/javasample/jxgrabkey-0.2.1_i386/lib/libJXGrabKey.so) 
    at java.lang.Runtime._load(libgcj.so.7rh) 
    at java.lang.Runtime.load(libgcj.so.7rh) 
    at java.lang.System.load(libgcj.so.7rh) 
    at JXGrabKeyTest.main(JXGrabKeyTest.java:17) 

我知道如何在Windows中处理这个(只是通过将DLL到PATH环境变量),但我不是很肯定的Linux。

我读过一些关于LD_LIBRARY_PATH和一些其他env vars,但我可以使它工作。

有什么建议吗?

编辑

从mmyers支持后indentify问题和阅读this threadthis other

我可以告诉大家:

我的系统是:Linux的2.6.18-53.el5

我的版本的GCC(S)是(是):

GCC-C++ - 4.1.2 -14.el5

GCC-gfortran-4.1.2-14.el5

libgcc中-4.1.2-14.el5

GCC -4.1.2-14.el5

的问题是我需要的gcc 4.2.0

AAAND显然有我的系统中没有GCC 4.2.0。

我想我将不得不等待它或作者重新编译它在以前的版本。

mmyers,非常感谢您的帮助。

回答

5

你试过-Djava.library.path=/path/to/library

编辑:重新读取错误消息,它看起来你正在加载的本地库试图链接到glibc版本3.4.9,显然没有安装。你可以检查你有什么版本的glibc吗?你在运行什么Linux发行版?

EDIT2:该问题似乎被缩小到libstdC++。我即将到达我的知识边缘,但this thread可能会有用。它建议升级到gcc 4.2;从评论,你似乎有版本4.1.2。让我知道如果这不起作用。

+0

实际上,从错误中看起来你正在加载的库试图链接到你没有的glibc版本。 – 2009-02-11 21:39:54

+0

@ mmyers @你的编辑:当然。我怎么做? :S ...有没有像glibc -version的东西? .... – OscarRyz 2009-02-11 21:45:52

1

subes,JXGrabKey开发这里...

我不知道很多关于这个错误我自己,但你对GCC和/或的libstdC++引线应正确

个人而言,我现在用的是gcc版本附带Ubuntu 8.10 atm。我始终坚持最新版本的出货。

当前版本:G ++(Ubuntu的4.3.2-1ubuntu12)4.3.2

下的libstdC++软件包安装在我的机器上: http://packages.ubuntu.com/intrepid/libstdc++5 http://packages.ubuntu.com/intrepid/libstdc++6

希望这会有所帮助,如果你发现任何有用, 告诉我。 :) 也许我必须编译jxgrabkey与旧版本的gcc版本,所以它向下兼容?有没有人有明智的建议? ^^

相关问题