C言語からLLVM経由でJavaクラスに変換するLLJVMを試した。

LLJVMはJavaアセンブラのJasminの作者が作ったのかな。
LLJVMは、clangまたはLLVM対応のGCCでコンパイルしたLLVMの中間言語ファイルをJavaアセンブラソースに変換して、それをJavaアセンブラJasminでアセンブルして、Javaで動くCランタイムライブラリを利用するJavaクラスファイルを生成するものです。
結論を先に言うと、printfは動いたんだけど、fopenが実行時にファイルオープンできずにエラーを返すので非実用です。
コマンド引数もargv[0](コマンド名)が入っておらず互換性が取れていませんでした。
これらの問題はNovosoftのC2Jにはありませんでした。
実用として使うには自分でランタイムライブラリを作り直さないと無理のようです。
LLJVMをインストールするのは難しいです。
LLVMは、2.7と古いものしか対応していません。
clang/LLVM 3.5では動きませんでした。
バイナリはLinux版しか用意されていません。
LLJVMのほかに、LLVM2.7に対応したclangまたはgccとLLVM 2.7、jasmin、pythonがインストールされている必要もあります。
jasminはjarファイルのままだと、そのままでは動きません。
javファイルを解凍するか、Pythonスクリプトのlljvm-ccの198行の
call_e(['java', 'jasmin.Main' の部分を
call_e(['java', '-jar' , 'jasmin.jar'
に書き換える必要があります。
ヘッダファイルのディレクトリを指定しないとコンパイルできないなどちょっとややこしいです。
私は、xubuntu14.4の32bit版にインストールしました。
Windowsで使うにはインストールの前にコンパイルが必要でかなり難しいと思います。