2016年4月28日木曜日

【備忘録】PHP 7.0.5 をソースからコンパイル - iconvエラーに悩まされ -

PHP 7.0.4 では問題なかったのに、何故か PHP 7.0.5 で iconv エラーに悩まされました。会議時間が迫る中、会議資料作成しながら、コンパイルしていたのにエラーがでるイライラ〜という感じでした。

兎にも角にも解決したので備忘録も込めて説明しておきます。

--with-iconv :  make: *** [sapi/cli/php] エラー 1


  • ./configure  --prefix=/usr/local/php7.0.5 --with-libdir=/usr/lib64   --with-iconv
  • make
でこのエラーがでました。 ./configure のオプションは他にいろいろつけましたが、
ここでは割愛

--with-iconv-dir=/usr/local: ***/ext/iconv/iconv.c:2583: undefined reference to `libiconv_open'



libiconvをソースからコンパイルして /usr/local 以下にインストールした後に、

  • ./configure  --prefix=/usr/local/php7.0.5 --with-libdir=/usr/lib64   --with-iconv-dir=/usr/local
  • make
とすると上記エラーに。

最終的な解決方法


  • ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/
  • ./configure  --prefix=/usr/local/php7.0.5 --with-libdir=/usr/lib64   --with-iconv-dir=/usr/local 
  • make ZEND_EXTRA_LIBS='-liconv'
つまり、 /usr/lib64 に libiconv がないぜってことと、make 時に iconvのライブラリを指定するオプションがないぜってことなんだろうなぁと思います。
でも、ln -s は不要だったような気がします(動作検証の結果)。まぁ今度コンパイルするときに試します(時間かかるのでまたGW中に)
これ調べるのに一時間ぐらいロスしました。ふ〜。

動作検証


  • ldd /usr/local/php7.0.5/bin/php | grep libiconv
    • libiconv.so.2 => /usr/local/lib/libiconv.so.2

ということで、libiconv もちゃんと組み込まれているってことですね。


2016年4月28日 @kimipooh



0 件のコメント: