把公司一些老软件Lotus Domino (r) Server, Release 6.0.3, September 18, 2003安装到其它新机器上去 ,但启动时报错:

/opt/lotus/notes/latest/linux/server: error while loading shared libraries: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory

提示缺少libstdc++-libc6.1-1.so.2库。

OS为:RHEL6.0  i386

查看库目录位置

# ll  /usr/lib/libstdc++-*
-rwxr-xr-x. 1 root root 262024 Nov 11  2010 libstdc++-3-libc6.2-2-2.10.0.so
lrwxrwxrwx. 1 root root     31 Dec 21 18:15 libstdc++-libc6.2-2.so.3 -> libstdc++-3-libc6.2-2-2.10.0.so

看看手动链接是否可以让lotus服务启动。

# cd /usr/lib
# ln -s libstdc++-3-libc6.2-2-2.10.0.so  libstdc++-libc6.1-1.so.2

再次启动,缺少libstdc++-libc6.1-1.so.2库的报错提示没有了,但又有了新的提示:

……
Fatal Error signal = 0x0000000b PID/TID = 2057/-214447248 
Thu Dec 22 10:48:07   Running NSD
NSD is in progress .................
……
Domino Halted. Type 'quit' to Terminate/Cleanup quit

查看日志信息有:  (10) ERROR: can't list open files. rerun as root if needed/required

估计是旧版lotus服务不支持新库文件导致的。从公司的另外一台RHEL4.X  i386的机器上复制出libstdc++-2-libc6.1-1-2.9.0.so文件,并上传到新安装机器 /usr/lib/ 下。

重新做链接文件指向

# cd /usr/lib
# ln -s libstdc++-2-libc6.1-1-2.9.0.so libstdc++-libc6.1-1.so.2
# ll libstdc++-*
-rwxr-xr-x. 1 root root 258288 Dec 14  2004 libstdc++-2-libc6.1-1-2.9.0.so
-rwxr-xr-x. 1 root root 262024 Nov 11  2010 libstdc++-3-libc6.2-2-2.10.0.so
lrwxrwxrwx. 1 root root     30 Dec 22 10:43 libstdc++-libc6.1-1.so.2 -> libstdc++-2-libc6.1-1-2.9.0.so
lrwxrwxrwx. 1 root root     31 Dec 21 18:15 libstdc++-libc6.2-2.so.3 -> libstdc++-3-libc6.2-2-2.10.0.so

启动lotus服务,呵呵!可以正常运行了。

在i386平台下,是没有问题。然后又测试x86_64平台下,也都可以用此方法。由此可以得出,在把一些旧软件安装到现有的系统时,原有旧软件不支持新版本库。可以通过其它方式,调用一些旧版本库以保证旧软件能够继续在新系统下运行。

题外话:使用虚拟机支持旧服务也是一种不错的选择,这里我们只提供一种解决的思路。

Logo

更多推荐