通过gcc编译代码时发现了一件奇怪的事情: 依赖库有时会在文件名(* .so)之前有一个目录,而通常它只是一个* .so,在文件名之前没有任何目录,如下所示:
$>ldd Lib/libpagemanager.so
linux-vdso.so.1 => (0x00007ffff65ef000)
liblec.so.1 => /farequote/FQProduction/Dataware/CachingServices/Lib/liblec.so.1 (0x00007f7a897ed000)
Input_API/MFaSTDeps/Lib/./liblmdb.so => not found
liblz4.so.1 => not found
libemmalloc.so.1 => /farequote/FQProduction/MiddleWareLibs/libemmalloc.so.1 (0x00007f7a895de000)
libfqparams.so.1 => /farequote/FQProduction/MiddleWareLibs/libfqparams.so.1 (0x00007f7a89391000)
libmfastlog.so.1 => not found
libmfaststat.so.1 => not found
libstdc++.so.6 => /farequote/FQProduction/GCCRuntime/Lib/libstdc++.so.6 (0x00007f7a89189000)
libm.so.6 => /lib64/libm.so.6 (0x00007f7a88f10000)
在此示例中,此库文件查找liblmdb.so,该文件必须来自Input_API / MFaSTDeps / Lib。其他依赖库没有这个约束。
这是怎么来的?我该怎么做才能使这个库依赖于来自LD_LIBRARY_PATH中任何目录的liblmdb.so?