RHEL 5에 Apache 2.4 32비트 버전을 설치해야 합니다. RHEL5 시스템에서 실행되는 애플리케이션에는 Apache 32비트가 필요하기 때문에 Apache 64비트를 설치하지 않았습니다(또는 과거 동작으로 인해 그렇게 생각했습니다).
"기호를 읽을 수 없습니다"라는 메시지가 나타납니다. make
이는 아마도 pcre 라이브러리가 ELF 64비트이고 설치가 ELF 32비트일 것으로 예상하기 때문일 것입니다.
**/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의 구성은 다음과 같이 실행됩니다.
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비트 버전의 정규식을 처리하도록 활성화할 수 있음 - 아마도 유니코드 콘텐츠에 대한 것입니까?).
Apache 구성에 사용한 옵션을 pcre
사용해 구축해 보세요.-m32