2009-02-11 68 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版本,所以它向下兼容?有沒有人有明智的建議? ^^

相關問題