问题:OpenOffice编译时有时会自动生成一些动态库,用于打包。而不是直接用系统提供的动态库。有时候会出现如下类似问题:
/bin/rpm: /home/code/OpenOffice/solver/310/unxlngi6.pro/lib/libnss3.so: version `NSS_3.11.2' not found (required by /usr/lib/librpmio.so.1)
/bin/rpm: /home/code/OpenOffice/solver/310/unxlngi6.pro/lib/libnss3.so: version `NSS_3.10' not found (required by /usr/lib/librpmio.so.1)
问题原因与解决:
用"ldd /bin/rpm"命令查看依赖关系,结果如下:
......
libelf.so.1 => /usr/lib/libelf.so.1 (0x00b4e000)
libnss3.so => /home/code/OpenOffice/solver/310/unxlngi6.pro/lib/libnss3.so (0x008e6000)
libpopt.so.0 => /lib/libpopt.so.0 (0x05d84000)
......
可以看出libnss3.so使用了我们从源码中自己编译出来的动态库,而不是跟其它动态库一样使用系统的。由此产生诸如版本不匹配的问题。
解决方法有两种:
a)在configure中加上"--with-system-openssl"让编译器默认使用系统自带的动态库;
b)如果还不行就在出错时将/home/code/OpenOffice/solver/310/unxlngi6.pro/lib/libnss3.so库删掉,那么就会自动去打包系统自带的那个动态库。