gcjのリンクでハマる

gcjによるjavaのネイティブコンパイルで下記のコマンドで実行するとundefined referenceエラーでリンクが上手くいかない。

gcj –main=HelloSWT –classpath=swt/win32/3218/swt.jar -Lthisiscool-gcc/swt/win32/3218 -lswt HelloSWT.java swtgif.o

で、2時間ほど色々試した結果、

gcj –main=HelloSWT –classpath=swt/win32/3218/swt.jar -Lthisiscool-gcc/swt/win32/3218 HelloSWT.java swtgif.o -lswt

で上手くいった。違いは”-lswt”と”.o”の順番である。

Manpage of GCCを見ると、

リンクは、オプション -c, -S, -E を指定して抑制しないかぎり(もしくはコンパイルエラーによってすべての処理が中断しないかぎり)、常に最終ステージで実行されます。リンクのステージにおいては、ソースファイルに対応した全ての .o ファイルと、 -l で指定したライブラリと、認識されなかったファイル名 (名前に .o のついたオブジェクトファイルや .a のついたアーカイブを含む) は、コマンドラインに並べられた順番でリンカに渡されます。

と、書いてあった。知るか、そんなん…

noch について

無線LANをこよなく愛する虚言者。
カテゴリー: プログラミング, 未分類 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。