ldd可执行文件如何找到/usr/lib64/libstdc++.so.6?

时间:2014-06-19 02:31:29

标签: c++ linux gcc linker

当我跑步时

ldd ./myprogram

它显示:

...
libstdc++.so.6 => /usr/lib64/stdc++.so.6
libm.so.6 => /lib64/libm.so.6
...

/ usr / lib64不在我的LD_LIBRARY_PATH中,它是如何找到/ usr / lib64的?当我链接'myprgrom'时,它链接了来自$ {HOME} / mynewgcc /.../ lib64的库。

1 个答案:

答案 0 :(得分:1)

ldconfig程序为ld.so(由ldd调用)或ld-linux.so构建缓存。 /etc/ld.so.conf/etc/ld.so.conf.d中的共享对象将添加到此缓存中。这些路径被缓存以允许更快的查找(而不是查看文件系统中的任意位置,如LD_LIBRARY_PATH)。 ldconfig也存在某些默认设置,即/lib/lib64/usr/lib/usr/lib64("受信任的"目录)它被添加到配置文件中的目录中(除非指定了ldconfig -n)。