• 締切済み

PHPのビルドについて質問です。

ご教授願います。 LINUX上でPHPをソースからビルドした場合、例えば./configureオプションに --with-readline というオプションをつけたとします。その場合別途インストールした libreadlline.soというモジュールが共有ライブラリとして動的に作用しますよね? lddコマンドで共有ライブラリをしらべると linux-vdso.so.1 => (0x00007fff86bff000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f70ed4ab000) libz.so.1 => /lib64/libz.so.1 (0x00007f70ed294000) libexslt.so.0 => /usr/lib64/libexslt.so.0 (0x00007f70ed080000) libtidy-0.99.so.0 => /usr/lib64/libtidy-0.99.so.0 (0x00007f70ece21000) libreadline.so.6 => /lib64/libreadline.so.6 (0x00007f70ecbdd000) libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f70ec9bb000) librt.so.1 => /lib64/librt.so.1 (0x00007f70ec7b3000) libmcrypt.so.4 => /usr/local/lib/libmcrypt.so.4 (0x00007f70ec580000) libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00007f70ec325000) libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007f70ec0ff000) とこのような共有状態が確認できます。だだこれだと、libreadline.so.6 => /lib64/libreadline.so.6という共有モジュールを 意図して削除した場合、動的リンクができずに php -a によるインタラクティブモードが動かせなくなります。 これを回避するために、静的リンク?というのでしょうかphpバイナリそのものに組み込むことはできないのでしょうか? つまり外部のlibreadline.soに依存せずにphpを動かすと行った具合です。 もちろん、これがなんのいみのない処理なのはわかります。起動するたびにメモリを大量に消費してしまうのでしょう。 ただ、こういうlibreadline.soなどの共有モジュールをphpバイナリに組み込める方法があるかどうかをしって実際に試してみたいのです。 LINUXなどPHPなどに造詣が深い方よろしっくご教授ください。お願い致します。

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

ちょっと調べるのが面倒なのでやっていませんが configureに --disable-shared とか --enable-static とかは無いですか? 場合によっては、使用するライブラリ全てを--enable-static --disable-shared相当でビルドしなおす必要があるかもしれません。

関連するQ&A