« Zaurusではまったこと | メイン | emacsにpyhon-modeを導入する »



ZaurusでPHP4をセルフコンパイルする

Zaurus(SL-C3200)でPHP4をセルフコンパイルしてみました。
これはPHPのソースコードをダウンロードしてきて、Zaurusでコンパイル、インストールするというものです。
PHPはすでにipkのパッケージがありますが、一度Zaurusでセルフコンパイルしてみたかったので
あまり意味もなくやってみました。
(本当はPearが一緒にパッケージになっているPHPをインストールしたかったからはじめたのですが、インストール後にPearが見つからず・・・?
2006/09/09追記:インストール後のログをよく見ると、
PEAR: unable to unpack /home/system/var/mnt/extmount/php-4.4.4/pear/package/PEAR-1.4.9.tar
とでてますね。解凍ができずうまくインストールできてないようです。手動で解凍したらそれらしいファイルがでてきました。なんとかしなければ…(苦笑)


ここでは自分でコンパイルする方法をメモしておきます。


※ここの情報は間違っている可能性や、お使いの環境により異なることもあるので実行は自己責任でお願いします。




◆下準備

まず、万が一に備えZaurusのバックアップをとっておくことをお勧めします。

(あらかじめApacheはインストールしてあるものとします。別バージョンのPHPが入っている場合はアンインストールしておいてください)


セルフ開発環境の配布 (gnu-dev_0.0.4)から開発環境をダウンロードします。

flexやbisonなどのパッケージがあらかじめ含まれているので非常にありがたいです

dev-imgというのもあり、それを使った方法もありますが、flexやbisonなどのパッケージが゙はいっていないのでそのままではPHPをコンパイルできませんでした。しかし、参考になりました。

・dev-imgの関連リンクLinuxザウルス/セルフ開発環境


gnu-dev_0.0.4はcraft化されているので、マウントしてあげて使います。
私はSDカードの直下にコピーしました。
以下のコマンドを実行します。

# mkdir /usr/local/gnu # mount -t cramfs -o loop /mnt/card/gnu-dev_0.0.4_cpp.cramfs /usr/local/gnu $ export PATH=/usr/local/gnu/bin:$PATH $ export LD_LIBRARY_PATH=/usr/local/gnu/lib:/usr/local/gnu/arm-linux/lib:$LD_LIBRARY_PATH

これでgccが使えるようになりました。


gcc --version

と打ってみてバージョンがでれば大丈夫です。
(command not foundとなるようではだめ)

//---
$ export PATH=/usr/local/gnu/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/gnu/lib:/usr/local/gnu/arm-linux/lib:$LD_LIBRARY_PATH
は毎回実行する必要があるので、面倒であれば
/home/zaurus/.bashrcや/home/root/.bashrcに書き込んでおくとよいでしょう。
こうするとターミナルを起動するだけで書き込んだ内容が実行されるようです。
//---

次にSDカードの準備です。あらかじめext3などでフォーマットしてある場合は大丈夫ですが、
fatなどでフォーマットしてある場合は、そのままではハードリンクがはれないためコンパイル途中で
エラーになってしまいます。
そこで りなざう事始
の「ext3 パーティションの作成」を参考にして一部の領域をext3化しておきます。
(別に全部フォーマットしなおしてもいいのでしょうが、なんかいやなので・・・)

私は512MB程度ext3としました。以下を実行


dd if=/dev/zero of=/mnt/card/FILE bs=1M count=512
/sbin/mke2fs -j /mnt/card/FILE
mkdir /mnt/MOUNT


/etc/fstab に以下を追加


/mnt/card/FILE /mnt/MOUNT ext3 noauto,loop 0 0


SD カードを使っているので/etc/sdcard/sd_mem_ctrlを編集
(内容省略。リンク先を参照のこと)


そして、SDカードの直下にPHPをダウンロードしてきて
おいておきます。私はphp4.4.4をダウンロードしました。
そして、
/mnt/card/php-4.4.4.tar.gzのようにしておきました。
そしてこれを/mnt/MOUNTの中に移動しました。

これで準備完了です。


◆コンパイル・インストール
コンパイルとインストールは
./configure→make→make install
の順で行います。
※かなり時間がかかります。ACアダプタを接続して行ってください。


・まず、/mnt/MOUNTに移動します。


cd mnt/MOUNT

・解凍


tar zxf php-4.4.4.tar.gz

(tar zxvf php-4.4.4.tar.gzでもいいですが、詳細を表示するため非常に時間がかかります)

./configure を実行。(オプションはお好みのものをつけてください。参考:付録 F. Configure オプション

./configure \ --with-apxs=/home/www/bin/apxs \ --with-config-file-path=/home/www/conf \ --enable-mbstring


make を実行


make

なぜか途中でエラーが出るので


/mnt/MOUNT/php-4.4.4/Zend/zend_strtod.c
の240・241目をコメントアウト(/**/で囲む)

zaurus_php1.png
↑このようにする・・・。

(作者がコメントをコメントアウトし忘れたみたいです。たぶん。これはどう見てもソースコードではない)

make install を実行


make install


zaurus_php2.png
↑インストール終了

※フラッシュメモリの空きが少ないと途中で止まってしまいます。


これでインストール完了です。


あとは普通に使えるみたいです。
phpinfoを表示してみたりして確認してください。

zaurus_php3.png
↑phpinfoをしてみたところ



--------------------------------------------

余談

私のコンパイル&インストール履歴(?)

・普通にdev-imgでコンパイルしようとした
          ↓
・パッケージが足りないため失敗
          ↓
・パッケージをインストールしようとして失敗(しかもcraft化する環境なし)
          ↓
・gnu-dev_0.0.4を使うことにした。パッケージ問題解決。
          ↓
・ファイルシステムがfatだったので大文字小文字の区別がつかず失敗
          ↓
・マウントの際にオプションをつけて対策する(過去の記事
          ↓
・ハードリンクを張れないといわれ失敗
          ↓
・結局一部をext3にしてコンパイル
          ↓
・ソースがおかしいため、途中でコケる。コメントアウト
          ↓
・フラッシュメモリの容量が足りないため失敗。余計なアプリケーションを削除
          ↓
・インストール成功!!


長かった・・・


--------------------------------------------

おまけ2
ハッキングLinuxザウルス
というザウルスの本を買いました。
Walrus, Visitの方などが書いていて、ここまで内容が濃い本はたぶんこれだけです。
なかなかよいのでおすすめ。




応援お願いします(人気blogランキングへ)

トラックバック

このエントリーのトラックバックURL:
http://www.bird-soft.net/mt/mt-tb.cgi/89

コメント

きのうコンパイルで、インストール一緒した?
本当はここへ意味したかった。

コメントを投稿