2010年8月26日木曜日

「ZaaIL」をlibtiffリンクして独自にコンパイルせんとす。けどダメだコリャ。

前の記事で、Alchemy使用の40種類以上の画像読み込みに対応するライブラリ「ZaaIL」の存在を知ったものの、TIFFがリンクし忘れで読み込み出来ない状態だということがわかった。

琴線探査: Alchemy使用の画像読み込みライブラリ「ZaaIL」を試さんとす。TIFF、TIFFがぁ・・・


その後ZaaLabsの方は、ZaaILのコンパイル方法を3つの記事に書いておられる。つまり「自分でコンパイルせよ」ということだろう。
Compiling ZaaIL with Alchemy – Part 1 | ZaaLabs

ふむぅ。気が重いけど、やってみるか。


1. アーカイブを用意する

こちらから頂いたlibraries配下にあるアーカイブを適当な場所にコピーする。
ZaaLabs's ZaaIL at master - GitHub

今回のアーカイブをコピーする場所は「/Users/jun/Desktop/ZaaIL」とした。


2. Alchemyを入手してインストール

こちらでAlchemyを頂く。
Adobe Labs - Downloads: Alchemy

インストール方法はこちらに書いてある。
Alchemy:Documentation:Getting Started - Adobe Labs

Alchemyはすでにインストールしていたので、確認だけしてスキップした。相当前にインストールしたと思ったけど、バージョン0.5aで変わってなかった。タイムスタンプを見ると2008.12?まだpreviewバージョンらしいけど、もうこれ以上バージョンアップしないのか?


3. Flex SDK 3.2を入手してインストール

こちらでFlex SDK 3.2を頂く。
Download Flex 3 - Flex SDK - Adobe Open Source

3.2というところがポイントらしい。Alchemyが出た頃が3.2の頃で、Alchemyがそれ以降バージョンアップしていないことによるのだと思う。

システムには3.2もインストールされていたので、これもスキップ。ということは、今後もAlchemyを使うつもりなら3.2はアンインストールしない方がいいということだ。


4. hacks.plの編集

サイトによると、$ALCHEMY_HOMEの環境変数を$ALCHEMY_HOME/achacks/hacks.plが正常に認識しないので編集する必要があるらしい。

# cd $ALCHEMY_HOME/achacks/
# cp hacks.pl hacks.pl.bak
# chmod 755 hacks.pl
# emacs -nw hacks.pl

・・・(56行目)
$home="/Users/jun/Applications/alchemy-darwin-v0.5a";
$ascjar=$ENV{ASC} || "$home/bin/asc.jar";
・・・

環境変数がとれないならまだしも、「$home/bin/asc.jar」となるところが「$home/asm-asc/lib/asc.jar」とは・・・そんなパスは無い。さすがブレビュー版。


5. gccの編集

サイトによると、$ALCHEMY_HOME/achacks/gccがシンタックスエラーで正常に動作しないので編集する必要があるらしい。

# cd $ALCHEMY_HOME/achacks
# cp gcc gcc.bak
# chmod 755 gcc
# emacs -nw gcc

・・・(274行目)
  if($o =~ /([^\/\.]+)(\..*)*$/)
・・・


6. zlibのコンパイル

# cd /Users/jun/Desktop/ZaaIL
# tar -zxvf zlib-1.2.4.tar.gz
# mv zlib-1.2.4/ zlib
# cd zlib
# alc-on
# ./configure
# sudo make
# exit
# cd /Users/jun/Desktop/ZaaIL/zlib
# sudo make install

最後のインストール処理は、そのまま「sudo make install」すると正常にインストールできなかった。おそらくalc-onが問題だと思われ。alc-offしても正常にインストールできなかったので、一度シェルを閉じて新しいシェルを開き(alc-onの環境変数をクリア)、再度「sudo make install」すると正常にインストールできた。


7. libtiffのコンパイル

# cd /Users/jun/Desktop/ZaaIL
# tar -zxvf tiff-3.9.2.tar.gz
# cd tiff-3.9.2
# alc-on
# ./configure
# sudo make
# exit
# cd /Users/jun/Desktop/ZaaIL/tiff-3.9.2
# sudo make install

なんだかインストール時にエラーが出てるけど、一応/usr/local/lib/libtiff.soが出来てるからいいのか?


8. libpngのコンパイル

# cd /Users/jun/Desktop/ZaaIL
# tar -zxvf libpng-1.2.43-no-config.tar.gz
# cd libpng-1.2.43
# alc-on
# sudo make -f scripts/makefile.gcc
# su - 
# cd /Users/jun/Desktop/ZaaIL/libpng-1.2.43
# cp libpng.a /usr/local/lib

サイトでは、configureが上手くいかないのでlibpng-1.2.43-no-config.tar.gzを使ってconfigureをスキップしたと書いてあるけど、やはりそうだった。makefile.gccには「install」が無いようなので手動でコピーした。


9. libmngのコンパイル

# cd /Users/jun/Desktop/ZaaIL
# tar -zxvf libmng-1.0.10.tar.gz
# cd libmng-1.0.10
# alc-on
# sudo make -f makefiles/makefile.unix

libmngにはconfigureが無い。libpngの場合と同様に使えそうなmakeファイルを指定してみたもののコンパイルできず。


10. lcmsのコンパイル

# cd /Users/jun/Desktop/ZaaIL
# tar -zxvf lcms-1.19.tar.gz
# cd lcms-1.19
# alc-on
# ./configure
# sudo make
# exit
# cd /Users/jun/Desktop/ZaaIL/lcms-1.19
# sudo make install

なんだかインストール時にエラーが出てるけど、一応/usr/local/lib/liblcms.soが出来てるからいいのか?


11. jpegのコンパイル

# cd /Users/jun/Desktop/ZaaIL
# tar -zxvf jpegsrc.v8a.tar.gz
# cd jpeg-8a
# alc-on
# ./configure
# sudo make
# sudo make install

ここはなぜか、alc-on状態でないとインストールが正常に行えなかった。


12. jasperのコンパイル

# cd /Users/jun/Desktop/ZaaIL
# unzip jasper-1.900.1.zip
# cd jasper-1.900.1
# alc-on
# ./configure
# sudo make
# sudo make install

なんかダメな感じ。このようにやったとしても、一度シェルを抜けてalc-on無し状態でインストールしたとしても。どうなんだろう。とりあえず進んでみる。


13. devilのコンパイル

# cd /Users/jun/Desktop/ZaaIL
# tar -zxvf DevIL-1.7.8.tar.gz
# cd devil-1.7.8
# alc-on
# ./configure
# sudo make

やっぱりダメだね。エラーが出てる。コンパイルできた手応え無いもん。

llvm-ld: error: Cannot find linker input 'libIL_la-il_utx.o'


結論

やはり、そう簡単に出来るものではないということを思い知る。Alchemy自体も不安定なわけで、TIFFをリンクし忘れたとは言え、ZaaLabsの人々はよくコンパイルしたものだと感心する。根性だね。

自分はこれ以上時間をかけられないので、ここでチャレンジを打ち切る。TIMES UP & GIVE UPだ。

願わくば、この記事が少しでも次のチャレンジャーの役に立ちますように。