RHEL6でphp5.5.31をビルド

RHEL6上でphp5.5.31をビルド。30分程度の作業だとなめてかかったら意外と手間がかかりました。

configureのオプション

はこんな。oracleクライアントのサポートが入っているくらいでほかはまぁ普通。

 ./configure --with-libdir=lib64 --with-apxs2=/usr/local/apache2/bin/apxs --with-pic --with-bz2 --with-zlib --with-zlib-dir=shared --with-gd --with-jpeg-dir=shared --with-png-dir=shared --with-xpm-dir=shared --with-gettext --with-gmp --with-freetype-dir --enable-xml --enable-mbstring --enable-zend-multibyte --with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client64/lib --with-ldap=/usr/lib64/evolution-openldap --with-openssl=shared --with-ldap-sasl -with-openssl

yumでいれたもの

configureをかけるといろいろ無いって言ってくるので適宜インストール。
結局以下のものをインストールしました。

libxml2*
bzip2*
*jpeg*
*png*
libXpm*
*freetype*
gmp*
openldap*

これでconfigureは通過。

linkエラーに対応

makeをかけるとまたいろいろとエラーを吐いてくれます。
一部を抜粋するとこんな。

(.text+0x4a93): undefined reference to `PR_GetError'
/usr/lib64/evolution-openldap/lib64/libldap.a(tls_m.o): In function `tlsm_deferred_ctx_init':
(.text+0x4aaf): undefined reference to `PR_ErrorToString'
/usr/lib64/evolution-openldap/lib64/libldap.a(tls_m.o): In function `tlsm_auth_cert_handler':
(中略)
(.text+0x4b05): undefined reference to `SSL_PeerCertificate'
/usr/lib64/evolution-openldap/lib64/libldap.a(tls_m.o): In function `tlsm_auth_cert_handler':
(.text+0x4b17): undefined reference to `SSL_RevealPinArg'
/usr/lib64/evolution-openldap/lib64/libldap.a(tls_m.o): In function `tlsm_auth_cert_handler':

(中略)
/usr/lib64/evolution-openldap/lib64/libldap.a(cyrus.o): In function `ldap_int_sasl_bind':
(.text+0x14cb): undefined reference to `sasl_getprop'
/usr/lib64/evolution-openldap/lib64/libldap.a(cyrus.o): In function `ldap_int_sasl_bind':
(.text+0x153f): undefined reference to `sasl_dispose'

上から,libnss3,libssl3,libsasl2のそれぞれに定義されているシンボル。
CFLAGSでリンクするように指定。

$ export CFLAGS='-lsasl2 -lnss3 -lssl3'

これで再度configure,make。