ablog

不器用で落着きのない技術者のメモ

/usr/lib/libexpat.so: could not read symbols: File in wrong format

Apacheコンパイルしてると

# cd /usr/local/src/apache-2.2.8-php4
# ./configure \
"--prefix=/usr/local/apache228-php4" \
"--enable-module=so" \
"--enable-module=rewrite"
# make
...
/usr/lib/libexpat.so: could not read symbols: File in wrong format
...
make: *** [all-recursive] エラー 1

/usr/lib/libexpat.so のファイルフォーマットがおかしいってって怒られた。

# ls -l /usr/lib/libexpat.so
lrwxrwxrwx 1 root root 27  125 15:03 /usr/lib/libexpat.so -> ../../lib/libexpat.so.0.5.0
# file  ../../lib/libexpat.so.0.5.0
../../lib/libexpat.so.0.5.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped

ぐぐってみると、

CentOSApacheの2.0系最新版(2.0.63)をインストールしようとしてmakeしていたらエラーが出た。

/usr/lib/libexpat.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status

調べてみると、何やら64ビットOS(x86_64)を使っているときに出るみたい。

libexpat.soは、/usr/libにもあるんだけど、64ビット用(x86_64)のは/usr/lib64にあると。

--with-expat=builtin

というわけで、書かれてある通り、"./configure"時に以下のオプションを追加して解決。

libexpat.so: could not read symbols: File in wrong format - 元RX-7乗りの適当な日々

ってことらしいので、試してみると、

# make distclean
# ./configure \
"--prefix=/usr/local/apache228-php4" \
"--enable-module=so" \
"--enable-module=rewrite" \
"--with-expat=builtin"
# make
# make install

解決!