今天新装了GCC 4.7.1,于是想把老的库重新编译一下(./configure CC=/usr/local/bin/gcc 来指定编译器版本。
但想到遇到如下错误:
CXXLD libhashkit/libhashkit.la
/usr/local/lib/../lib/libstdc++.so: could not read symbols: File in wrong format
collect2: error: ld returned 1 exit status
执行: file /usr/local/lib/../lib/libstdc++.so 一看,发现这是一个32位的库,本来是编译成64位代码,结查却链接了32位的STDC++库,当然报错了。
由是重新执行:
make clean all LDFLAGS="-L/usr/lib64 -L/lib64"
问题解决。
有兴趣的朋友可 以看一下libmemcached的脚本,找出最根本的原因。。。