RHEL 5 に Apache 2.4 32 ビット バージョンをインストールする必要があります。RHEL5 マシンで実行されているアプリケーションには Apache 32 ビットが必要であるため (または、過去の動作からそう思うため)、64 ビット Apache をインストールしていません。
「シンボルを読み取れませんでした」というメッセージが表示されますが、make
これはおそらく、インストール時に ELF 32 ビットを想定しているのに、pcre ライブラリが ELF 64 ビットであるためです。
**/usr/local/lib/libpcre.so: could not read symbols: File in wrong format**
collect2: ld returned 1 exit status
make[1]: *** [httpd] Error 1
make[1]: Leaving directory `/opt/myapp/httpd-2.4.7'
make: *** [all-recursive] Error 1
Apache 2.4 の configure は次のように実行されます:
CFLAGS="-m32"; export CFLAGS
LDFLAGS="-m32"; export LDFLAGS
"./configure" \
"--prefix=/opt/myapp/apache2.4" \
"--with-mpm=worker" \
"--enable-static-support" \
"--enable-ssl=static" \
"--enable-modules=most" \
"--disable-authndbd" \
"--disable-authn-dbm" \
"--disable-dbd" \
"--enable-static-logresolve" \
"--enable-static-rotatelogs" \
"--enable-proxy=static" \
"--enable-proxyconnect=static" \
"--enable-proxy-ftp=static" \
"--enable-proxy-http=static" \
"--enable-rewrite=static" \
"--enable-so=static" \
"--with-ssl=/opt/myapp/apache2.4/openssl" \
"--host=x86_32-unknown-linux-gnu" \
"host_alias=x86_32-unknown-linux-gnu" \
"CFLAGS=-m32" \
"LDFLAGS=-m32" \
"--with-included-apr" \
"--with-pcre=/usr/local" \
"$@"
以下を使用して、エラーなしで PCRE をインストールしました。
./configure --prefix=/usr/local --enable-pcre32
pcretest を実行すると、次の結果が得られます (8 ビット サポートでコンパイルされていますか?):
$ /usr/local/bin/pcretest -C
PCRE version 8.33 2013-05-28
Compiled with
8-bit support
No UTF-8 support
No Unicode properties support
No just-in-time compiler support
Newline sequence is LF
\R matches all Unicode newlines
Internal link size = 2
POSIX malloc threshold = 10
Default match limit = 10000000
Default recursion depth limit = 10000000
Match recursion uses stack
しかし、作成されたライブラリ (32 ビット アプリをサポートするはず) を確認すると、ELF 64 ビットが取得されます。
$ file libpcre32.so.0.0.1
libpcre32.so.0.0.1: **ELF 64-bit** LSB shared object, AMD x86-64, version 1 (SYSV), not stripped
答え1
あなたの--enable_pcre32 configure
オプションは、それ自体の 32 ビット オプションを参照しますpcre
(正規表現の 16 ビット バージョンまたは 32 ビット バージョンを処理するために有効にできます - おそらく Unicode 用でしょうか?)
Apache の configure で使用したオプションpcre
を使用してビルドしてみてください。-m32