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。