PHP 7.4のコンパイルで詰まった
TOP > てきとうにこらむ > ゲーム作りとプログラミング日記 > PHP 7.4のコンパイルで詰まった
PHP 7.4.0のコンパイル
PHP 7.4のコンパイルをしようと思ったら、結構ハマったというほどには変わったので変わったところをつらつらと。バージョンは7.4.0alpha3(beta1がでてる)。OSはMac。
結論としては、コンパイルオプションとビルドのコマンドは以下の通り。
$ ./buildconf --force && ./configure --enable-debug --enable-mbstring --enable-intl && make
最初、configureを動かすと、こういうエラーが出てきた。
configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met: No package 'icu-uc' found No package 'icu-io' found No package 'icu-i18n' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ICU_CFLAGS and ICU_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
brew install icu4cをしたらこういう表示がでた
icu4c is keg-only, which means it was not symlinked into /usr/local, because macOS provides libicucore.dylib (but nothing else). If you need to have icu4c first in your PATH run: echo 'export PATH="/usr/local/opt/icu4c/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/icu4c/sbin:$PATH"' >> ~/.bash_profile For compilers to find icu4c you may need to set: export LDFLAGS="-L/usr/local/opt/icu4c/lib" export CPPFLAGS="-I/usr/local/opt/icu4c/include" For pkg-config to find icu4c you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
この表示の通り、PKG_CONFIG_PATHを設定した。keg-onlyではシンボリックリンクがはられないので、icu4cには必要のようだ。
export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
またしてもエラーが出た。今度はoniguruma(鬼車)のライブラリ。同梱されていたのが7.4で外部のライブラリを使うようになったからだと思う
checking for oniguruma... no configure: error: Package requirements (oniguruma) were not met: No package 'oniguruma' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ONIG_CFLAGS and ONIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
鬼車をインストール
$ brew install oniguruma
checking whether to enable vld support... no ./configure: line 78971: syntax error near unexpected token `vld,' ./configure: line 78971: ` PHP_EXTENSION(vld, $ext_shared)'
なんでvldがこけるんだ?しかもnoだぞと思って、--enable-vldしたりとか、他のオプションを削ったりとかいろいろ調べたら、他のバージョンでいろいろやってたのが残ってた
tekimennoMacBook-Pro-3:php-src tekimen$ git status On branch php-7.4.0alpha3 Untracked files: (use "git add..." to include in what will be committed) .DS_Store :memory; TSRM/tsrm_config.h bcmath.php bug_77297.php bug_77589.php buildmk.stamp collator.php ext/.DS_Store ext/hello_world/ ext/mbstring/oniguruma/ ext/vld/ generated_lists heisei.php install-sh memory; missing mkinstalldirs msg.txt new_era_of_japan.php php7.spec run_002_tmp.fixture strcmp_sushi_beer.php tags test_php73_rc5_bug.php test_wrong_params.php
これはext/vldを消せば解決した。
$ rm -rf ext/vld
これでPHP7.4が動いた!
$ sapi/cli/php -v
PHP 7.4.0alpha3 (cli) (built: Jul 17 2019 18:02:06) ( NTS DEBUG )
Copyright (c) The PHP Group
Zend Engine v3.4.0-dev, Copyright (c) Zend Technologies
PKG_CONFIG_PATHは、1つしか設定できないのだろうかと思って調べた。
Macでビルドができないというのはないはずだし、テストしてるはずだからそれを調べたら、php-srcではPKG_CONFIG_PATHを複数指定してた https://github.com/php/php-src/blob/PHP-7.4/azure/macos/job.yml
追記 - GDについて
GDは、7.3までは--with-gdだったのだけど、7.4からは--enable-gdになった。また、libpngは必要なくなり(厳密にはlibpngは必須になったのでコンパイルオプションに加える必要がなくなった)、--with-jpeg-dirが--with-jpegになったりと結構違うことがわかった。
詳しいのは公式マニュアルへ PHP: インストール手順 - Manual