[Interix] PHPのlibtool

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が起動するようになりました。パッチは冒頭のパッケージに入れてありますので、具体的な修正内容はそちらを参照してください。

カテゴリー: Interix パーマリンク

コメントを残す