2010年06月01日
PCC を使ってみる。(失敗)
前回はビルドしただけでしたが、今回は実際にインストールして使ってみます。
… と思ったのですが、実は前回の内容では、cpp.exe や ccom.exe などのコンパイラ本体がちゃんと作られていないことがわかりました。
その後努力してみたのですが、結論から言うとどうも上手く行きませんでした。
というわけで、以下は作業ログです。
(ブログを書きながらソフトウェアを試しているので、こういう時もあります…。)
とりあえずインストールしてみます。
インストールだけする方法がわからなかった (makefile ではなく、バッチファイル…) ので、もう一回ビルドからやりました。(どのみち数秒で終わります。)
C:\work\pcc\pcc-100525\os\win32>build.bat /cl /pccsrcdir c:\work\pcc\pcc-100525 /pcclibssrcdir c:\work\pcc\pcc-libs-100525 /prefix c:\work\pcc\install /install
/install と /prefix オプションがポイントです。今回は c:\work\pcc\install にインストールすることにしました。
C:\work\pcc\pcc-100525\os\win32>cd c:\work\pcc\install
C:\work\pcc\install>tree /f
C:.
├─bin
│ pcc.exe
│
├─lib
│ └─i386-win32
│ └─0.9.9
│ ├─include
│ │ float.h
│ │ libpcc_float.h
│ │ libpcc_stdarg.h
│ │ libpcc_stdbool.h
│ │ libpcc_stddef.h
│ │ stdarg.h
│ │ stdbool.h
│ │ stddef.h
│ │
│ └─lib
│ libpcc.a
│
├─libexec
└─man
└─man1
cc.1
ccom.1
cpp.1
ここで pcc で適当な C プログラムをコンパイルしようとして気が付いたのですが、cpp.exe が無いというエラーが出ます。
よくよく build.bat を読んでみると、インストールされるはずの cpp.exe と ccom.exe がコンパイルエラーになっていてバイナリが作られていないので、libexec 以下にインストールされていません。
どうも cgram.c などの lex で生成された C ファイルのコンパイルに失敗している模様。バッチファイルなので、途中でコンパイルが失敗してもそのまま進んでしまうのは、かなり問題だと思うのですが…
Win32 ターゲットはあまりメンテナンスされてない感じなので、snapshot はビルドが壊れている可能性もあります。
ここらへんを見てみると、少なくとも 20090818 の時点では Win32 版のバイナリが作れているようです。
というわけで pcc-090818.tgz をダウンロードして同様の修正を加えてビルドしてみたのですが、今度は cpp.exe の y.tab.c でエラー。ちょっと簡単には直りそうもない感じですね。