Sun Studio 12:Fortran 编程指南

4.3.4.3 修复动态链接期间的错误

当动态链接程序找不到所需库的位置时,它会发出以下错误消息:


ld.so: prog: fatal: libmylib.so: can’t open file:

此消息表明这些库不在其应在的位置。您也许在生成可执行文件时指定了共享库的路径,但这些库随后已被移动。例如,您可能先用 /my/libs/ 中您自己的动态库生成了a.out,而后来又将这些库移到了另一目录。

使用 ldd 确定可执行文件期望在哪儿找到这些库:


demo% ldd a.out
libfui.so.1 =>   /opt/SUNWspro/lib/libfui.so.1
    libfai.so.1 =>   /opt/SUNWspro/lib/libfai.so.1
    libfai2.so.1 =>  /opt/SUNWspro/lib/libfai2.so.1
    libfsumai.so.1 =>    /opt/SUNWspro/lib/libfsumai.so.1
    libfprodai.so.1 =>   /opt/SUNWspro/lib/libfprodai.so.1
    libfminlai.so.1 =>   /opt/SUNWspro/lib/libfminlai.so.1
    libfmaxlai.so.1 =>   /opt/SUNWspro/lib/libfmaxlai.so.1
    libfminvai.so.1 =>   /opt/SUNWspro/lib/libfminvai.so.1
    libfmaxvai.so.1 =>   /opt/SUNWspro/lib/libfmaxvai.so.1
    libfsu.so.1 =>   /opt/SUNWspro/lib/libfsu.so.1
    libsunmath.so.1 =>   /opt/SUNWspro/lib/libsunmath.so.1
    libm.so.1 =>     /usr/lib/libm.so.1
    libc.so.1 =>     /usr/lib/libc.so.1
    libdl.so.1 =>    /usr/lib/libdl.so.1
    /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1

如果可能的话,将这些库移动或复制到正确的目录中,或者在链接程序搜索的目录中建立到该目录的软链接(使用 ln -s)。或者,可能是没有正确设置 LD_LIBRARY_PATH。检查 LD_LIBRARY_PATH 是否包含运行时所需库的路径。