GCJ参照エラー
Java-Gnomeを利用したJavaプログラムをGCJでコンパイルしたときにundefined referenceとか言われる。
↓×誤
gcj -o taka --classpath=/usr/share/java/gtk2.6.jar:/usr/share/java/gnome2.10.jar:/usr/share/java/glade2.10.jar --main=sample.TMRunner src/sample/TMRunner.java
エラーメッセージ
/tmp/ccr2Mp4r.o(.text+0x36): In function `sample::TMRunner$1::keyEvent(org::gnu::gtk::event::KeyEvent*)': TMRunner.java: undefined reference to `org::gnu::gtk::event::KeyEvent$Type::class$' /tmp/ccr2Mp4r.o(.text+0x44):TMRunner.java: undefined reference to `org::gnu::gtk::event::KeyEvent$Type::KEY_PRESSED' /tmp/ccr2Mp4r.o(.text+0xda):TMRunner.java: undefined reference to `org::gnu::gtk::Gtk::mainQuit()' ...
↓○正
gcj -o taka --classpath=/usr/share/java/gtk2.6.jar:/usr/share/java/gnome2.10.jar:/usr/share/java/glade2.10.jar -lgtkjava-2.6 -lgnomejava-2.10 -lgladejava-2.10 --main=sample.TMRunner src/sample/TMRunner.java
-lオプションが必要らしい。ぐーぐってると、"-lgtkjava-2.6"でなしに"-lgtkjarxxx"という例が多く、ちょっとハマった。こういうネイティブまわりのエラーは苦手。
参考
http://java-gnome.sourceforge.net/cgi-bin/bin/view/Main/AntNativeCompiles
http://java-gnome.sourceforge.net/cgi-bin/bin/view/Main/NativeBinaries