ぷちぷちとデバッグ (preverify のコンパイル)
Java 環境構築 on
りなザウの続き…。
javaVM は jikes-sablevm なるパッケージをインストールする事で解決。
何だかんだで,やっぱり dselect が便利。apt-cache で探すのも,aptitude で入れるのも“性に合わ”ない。
Java のコンパイルも実行もできた。やっぱり目指すは
MIDlet 開発環境の構築でしょう。
OSX の時も悩んだ preverify コマンドだが,もはや今どきは
Java のソースは公開されている筈だとの信念(?) の元,preverify のソースコードを探す旅に出る。
http://java.sun.com/products/cldc/
→ Reference Implementation: CLDC 1.1 RI:
→ →
Java 2 Platform, Micro Edition Connected Limited Device Configuration Version 1.1 Reference Implementation
と進み,j2me_cldc-1_1-fcs-src-winunix.zip をダウンロードする。
解凍して目的のソースコードはココ!
./j2me_cldc/tools/preverifier/src
…で? Makefile も何もナシ。C とヘッダーファイルだけ…?
全部コンパイルしてリンクしたらいいのかな?
PRG = preverify
CC = gcc
OPTIONS = -Wall
LIBS=-lc
OBJS = main.o check_class.o check_code.o classloader.o classresolver.o convert_md.o file.o inlinejsr.o jar_support.o jar.o stubs.o sys_support.o util.o utf.o
all: $(OBJS)
$(CC) $(OPTIONS) -o $(PRG) $(OBJS) $(LIBS)
.c.o:
$(CC) $(OPTIONS) -c $<
clean:
rm $(PRG) $(OBJS)
まずはこんな感じで Makefile を書く。
…が! error でまくり?!
見てみると,カレントもインクルードパスにしてるのか?!
#include <sys_api.h>
#include <path_md.h>
#include <path.h>
#include <oobj.h>
#include <jar.h>
#include <locale_md.h>
てな感じの include だらけ…。これはイカンじゃろ? と,#include "sys_api.h" と修正していく…。
後は uint_t の typedef が無さそう (typedefs.h から呼んでいる typedefs_md.h で定義し忘れ?) なので,
typedef unsigned int uint_t;
を typedefs.h に追記。
最後に #ifdef UNIX を通りたいので,ソレらの前に,
#define UNIX
を入れる (Makefile で define しておく方法があるのかな?)。
※ コンパイルオプション -D でできるよね。すっかり失念してました (
2007年12月19日追記)
無事にコンパイルも通り,preverify コマンドができた!!
…と,できたところで今宵は燃え尽きるのであった…。
// ant インストールして寝る。