如何检查共享对象的内部属性?

时间:2009-09-15 15:06:31

标签: unix solaris hp-ux

使用HP-UX时,我可以使用chatr实用程序报告共享库的各种内部属性。它还允许我修改我构建的共享库的内部属性。

chatr实用程序可以报告并在某些情况下修改以下内容:

  1. 运行时绑定行为,
  2. 在构建时创建的嵌入式库路径列表
  3. 库是否需要运行时路径查找,
  4. 内部名称,
  5. 等等。
  6. 这样的实用程序是否适用于Solaris?

    编辑:怪异!感谢mark4o的回答,我重新审视了典型系统的elfdump输出.so(Sol 10上的libm.so.2)。然而,这是一个怪异的部分,我错误地输入命令:

    elfdump libm.so.2 | moe
    

    在惊人的偶然性中,这给了我一个名为moe的实用程序的用法消息,其man page页面描述:

      

    moe实用程序显示包含保留的运行时链接程序标记的路径名的最佳扩展。这些标记可用于定义动态对象中的依赖项,filtee和runpath。在运行时扩展这些令牌,提供了一种灵活的机制,用于选择在此机器上性能最佳的对象和搜索路径。

    这将帮助我解决为什么libm.so.2 shlib在两台不同的机器上都不兼容,导致我的不完整的可执行文件无法在一台服务器上启动。

2 个答案:

答案 0 :(得分:2)

有关显示信息的信息,请参阅Solaris elfdumppvs实用程序。对于调试绑定问题,larimoe也可能有所帮助。但是,这些实用程序无法修改库。

答案 1 :(得分:2)

从Solaris 11(以及导致它的一些OpenSolaris和Solaris Express版本,但不是Solaris 10或更早版本)开始,现在有elfedit tool用于修改运行时路径和类似属性。