InterixでPHPのパッケージを作成しました。以下に追加パッケージとして置いておきます。今回からパッケージのファイル名にバージョンと作成日を入れることにしました。
libtoolでハマったので参考までに書いておきます。
libtool
libxml2をインストールします。ライブラリのパスが標準外のため、xml2-config –libsでrpath(-Wl,-R)を返すように細工しておきます。
% xml2-config --libs -L/opt/pmgr/lib -Wl,-R/opt/pmgr/lib -lxml2 -lpthread -lm |
PHPをconfigureします。
./configure --prefix=/opt/pmgr |
libxml2が見付からないとエラーになったので、libxml2の場所を指示します。
./configure --prefix=/opt/pmgr --with-libxml-dir=/opt/pmgr |
configureは成功しますが、コンパイル中にL_ctermidが見付からないとエラーになります。Interixでは_ALL_SOURCEマクロを付けないとlibcが制限されてしまいます。そのためconfigureをやり直します。Interixではよくあることです。
CFLAGS=-D_ALL_SOURCE ./configure --prefix=/opt/pmgr --with-libxml-dir=/opt/pmgr |
これでコンパイルは通りました。しかしphpが起動しません。
php: error in loading shared libraries libxml2.so.2: cannot open shared object file: No such file or directory |
先ほどxml2-configに付け足したrpathの指定が効いていないようです。libtoolが共有ライブラリを認識しないため、gccにrpathを渡していないようです。libtool周りの問題はconfig.subとconfig.guessを差し替えれば直ることが多いのですが、phpではうまくいきません。
configureを見ると、OS別に分岐する箇所があって、それがlibtoolに反映されていました。そのためInterixの処理を付け足しました。これでようやくphpが起動するようになりました。パッチは冒頭のパッケージに入れてありますので、具体的な修正内容はそちらを参照してください。