2007年 12月 18日 (火)

ぷちぷちとデバッグ (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 インストールして寝る。
QRcode Tweet

このページの半分はフィクションです。もし同一の名称があった場合も,実在の人物・団体・事件などとはあんまり関係ありません。
CAPTCHA

[月インデックス] [単語インデックス] [コメントインデックス] [画像インデックス]
[TAKEchonNET] → [大いなる疲労の告知]
Donate us![TAKEchonNET]