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