Diary-nagataka-シリコンバレーで働きたい!という夢への日々

外資ITで働くエンジニアが趣味や日々の事など書いてます(技術の話は別ブログ http://wanna-be-geek.seesaa.net/ )

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告
  3. このエントリーを含むはてなブックマーク

SOOTインストール記

夕方から研究室へやってきて研究の実行環境を整えています。

やっと動いてくれたので経過をメモ、以下は誰か関係ある人が見て役に立ててくれたらいいなと。


TODO:
SOOTのインストール

研究で使う予定のSOOTというフレームワークをインストールします。

SOOTの本家ページはコチラ
このSOOTといのはJavaの解析ツールらしい。

論文を読んでいると、自分が新たにやろうとしている畑ではやたらと名前が出てくるので前々から気になっていました。

自分も論文を読んで行く中で少しずつ方向が見えて来た(?)ので、論文読みだけじゃなくて作業にも取りかかろうかなと考え、コイツをインストールすることに。


まずは本家ページからSOOTをダウンロードしてきます。

今回自分はsootall-2.3.0.jarを取って来ました。

"To install it you must unjar(untar) it, and add the classes directory soot-2.3.0/soot/classes to your CLASSPATH. The Jasmin and Polyglot classes jar files, or classes directories, must also be added to your CLASSPATH"
とあるので、一先ずunjarします

$ jar xf sootall-2.3.0.jar

で、クラスパスを追加しなければいけないので追加

$ CLASSPATH=.:/Users/nagataka/soot-2.3.0/lib/sootclasses-2.3.0.jar:/Users/nagataka/polyglot-1.3.5/lib/polyglot.jar:/Users/nagataka/jasmin-2.3.0/lib/jasminclasses-2.3.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Classes/classes.jar; export CLASSPATH
(環境はMacOS10.5でbashです)

ここで完全にハマりましたorz

一番最初のカレント( . )の指定を忘れるとハマります

理由はコチラのサイトで判明


最初は
$ CLASSPATH=/Users/nagataka/soot-2.3.0/lib/sootclasses-2.3.0.jar:/Users/nagataka/polyglot-1.3.5/lib/polyglot.jar:/Users/nagataka/jasmin-2.3.0/lib/jasminclasses-2.3.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Classes/classes.jar; export CLASSPATH
としていたのだけど、これだとカレントが見えなくなってしまうみたい。
だからNoClassDefFoundErrorって怒られたのね。。

一先ず上記正解パスを通し、
$ java soot.Main --help
と入力したらヘルプが表示された!やった!!


さて、次はいよいよ実際にjavaクラスを喰わせてみよう♪

お決まりのHelloWorldを作成し
$ java soot.Main -f jimple HelloWorld
と入力すると...

Soot started on Sat Jul 11 21:29:40 JST 2009
Transforming HelloWorld...
Writing to sootOutput/HelloWorld.jimple
Soot finished on Sat Jul 11 21:29:41 JST 2009
Soot has run for 0 min. 1 sec.


キタ!!

さっそくsootOutputへ移動してみるとHelloWorld.jimpleというjimple(ジンプル)ファイルがいました!

jimpleっていうのは、「Javaと相互変換可能な3番地コードからなる中間言語」で、Javaに比ベプログラム解析や最適化が適用しやすいんだそうな。
だからこの分野ではよく出てくるのね。

さっそくjimpleファイルを見てみるとこんな感じ

1 public class HelloWorld extends java.lang.Object
2 {
3
4 public void ()
5 {
6 HelloWorld r0;
7
8 r0 := @this: HelloWorld;
9 specialinvoke r0.()>();
10 return;
11 }
12
13 public static void main(java.lang.String[])
14 {
15 java.lang.String[] r0;
16 java.io.PrintStream $r1;
17
18 r0 := @parameter0: java.lang.String[];
19 $r1 = ;
20 virtualinvoke $r1.("HelloWorld");
21 return;
22 }


おぉう、なんか色々とやっておる...

一先ずここまで出来たので、後はまた月曜以降にやる事にして今日は帰宅します~

これからは論文読みばかりじゃやなくて実際に手を動かすフェーズに少しずつ突入だな=3

このエントリーには適宜追記してログを残していこうっと。
スポンサーサイト
  1. 2009/07/11(土) 21:52:24|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. このエントリーを含むはてなブックマーク
<<ミイラ | ホーム | 『理想』を考える+カラーバス>>

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://nagataka.blog50.fc2.com/tb.php/352-028f8d68
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。