【问题标题】:How ldd executable finds /usr/lib64/libstdc++.so.6?ldd 可执行文件如何找到 /usr/lib64/libstdc++.so.6?
【发布时间】:2014-06-19 02:31:28
【问题描述】:

当我跑步时

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 的库。

【问题讨论】:

  • /etc/ld.so.conf.d
  • @Brian:感谢您的回复。我已经检查过了:cat ld.so.conf 显示“include ld.so.conf.d/*.conf”。该目录下的 'cat' *.conf 显示: /usr/lib64/atlas hwcap 1 nosegneg hwcap 1 nosegneg /usr/local/lib /usr/lib64/mysql /usr/lib64/R/lib /usr/lib64/xulrunner don '看不到 /usr/lib64

标签: c++ linux gcc linker


【解决方案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已指定)。

【讨论】:

  • 请看我上面对布赖恩的评论。我在这些 conf 文件中看不到 /usr/lib64。我缺少的任何东西
  • 我刚刚添加了关于受信任目录的说明。
猜你喜欢
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 2017-12-07
  • 2015-06-05
  • 1970-01-01
  • 2019-07-19
相关资源
最近更新 更多