PHP4.4.2のRHEL系64bit環境でのコンパイル

gd系やcurl系を有効にしてコンパイルする場合、configureに手を入れなきゃいけないのがウザかった。
configureの中で、-L$CPDF_JPEG_DIR/libみたいな感じでハードコーディングしてあるから、RH系のようにlib64とかその辺りに64ビットのライブラリが置いてあるような環境ではconfigureに手を入れないといけない。


てか、lib64ってなんだよ。32ビットと64ビット共存させることなんてありえないと思うんだけど、わけなきゃいけない理由ってあるのかなあ?

そんなこんなで、超適当だけど、


2245,2251c2245,2247< if [ "x86_64" = `uname -m` ]; then< _LIB_64=( lib64 /usr/lib64 /usr/local/lib64 )< _LIB_64_EXT=64< else< _LIB_64=''< _LIB_64_EXT=''< fi

    • -

>
>
>
21218c21214< if test -f "$i/lib$_LIB_64_EXT/libjpeg.$SHLIB_SUFFIX_NAME" -o -f "$i/lib$_LIB_64_EXT/libjpeg.a"; then

    • -

> if test -f "$i/lib/libjpeg.$SHLIB_SUFFIX_NAME" -o -f "$i/lib/libjpeg.a"; then
21229c21225< -L$CPDF_JPEG_DIR/lib$_LIB_64_EXT

って感じで、適当に変更してコンパイルした。(diff取ったら長かったし汎用性ないので、全部は乗せません。)


もしかすると、必要なライブラリのシンボリックリンクを張ったほうが良かったかもしれないけど、それはそれでなんかねえ。どういうのがベストの解なんだろう?



ちなみにlibphp.soとphpのlddはこうなった。


[kazuaki@localhost /usr/local/src]$ ldd /usr/local/apache2/modules/libphp4.so
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000002a959fd000)
libmysqlclient.so.12 => /usr/local/mysql/lib/mysql/libmysqlclient.so.12 (0x0000002a95b31000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x0000002a95c79000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x0000002a95e04000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000002a95f2b000)
libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x0000002a9603e000)
libcurl.so.3 => /usr/lib64/libcurl.so.3 (0x0000002a96160000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x0000002a96293000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000002a963a8000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000002a9652f000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000002a96632000)
libssl.so.4 => /lib64/libssl.so.4 (0x0000002a96749000)
libcrypto.so.4 => /lib64/libcrypto.so.4 (0x0000002a96886000)
libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000002a96ab6000)
libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000002a96bcc000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000002a96d3e000)
libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000002a96e40000)
libidn.so.11 => /usr/lib64/libidn.so.11 (0x0000002a96f63000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a97095000)
/lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)
[kazuaki@localhost /usr/local/src]$ ldd /usr/local/bin/php
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003310f00000)
libmysqlclient.so.12 => /usr/local/mysql/lib/mysql/libmysqlclient.so.12 (0x0000002a95558000)
libz.so.1 => /usr/lib64/libz.so.1 (0x000000330a200000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x000000330b000000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x0000003311900000)
libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x000000330e000000)
libcurl.so.3 => /usr/lib64/libcurl.so.3 (0x000000330aa00000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x000000330d500000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000003309a00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003309c00000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003311300000)
libssl.so.4 => /lib64/libssl.so.4 (0x000000330ea00000)
libcrypto.so.4 => /lib64/libcrypto.so.4 (0x000000330dd00000)
libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x000000330e800000)
libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x000000330e400000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x000000330db00000)
libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x000000330e200000)
libidn.so.11 => /usr/lib64/libidn.so.11 (0x000000330a600000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000003309700000)
/lib64/ld-linux-x86-64.so.2 (0x0000003309500000)
軽くテストしても大丈夫そうだった。