怖くない!ゼロから始めるPHPソースコードコンパイル入門
Autoconf で構成されているので、./configure スクリプトを実行してビルドする 最低限 gcc, pkg-config, libml2-dev, libsqlite3-dev, make パッケージが必要
ビルド構成を変更するには、/configure のオプションを用いる
--help で一覧が確認できる
一部の機能はコンパイル時に有効にしないと面倒なことに(e.g. mysqld)
Docker Library の Dockerfile が参考になる
競合が起きなければ、サードパーティ拡張機能を導入することも可能
PHP は C99 準拠なので、C コンパイラであればコンパイルできる(e.g. clang) warning.icon
既存の PHP は gcc の拡張に大きく依存しているため、clang ではパフォーマンスが悪化する
GRV(Global Register Variables) ただし、デバッグ情報が豊富であったりするため、開発時には切り替えるのも良い
コンパイラオプションを変更することも可能
バグ(SEGV)を報告する際には、デバッグビルドが便利 コンパイル最適化の無効化や内部アサーション有効化なので、コアダンプやスタックトレースが解析しやすくなる
warning.icon
コンパイラ最適化起因のバグの場合、デバッグビルドでは再現しない場合がある
ただし、「デバッグビルドすることで再現しない」というのも有益な情報であるため、報告時にはその情報も伝達するのが良い
8.4 からビルド時に環境変数でビルドに関する情報を埋め込めることができるようになった
https://scrapbox.io/files/6767a6492573aa406405f26f.png