代码之家  ›  专栏  ›  技术社区  ›  Rob Wells

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

  •  2
  • Rob Wells  · 技术社区  · 15 年前

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

    chatr实用程序可以报告并在某些情况下进行修改,例如:

    1. 运行时绑定行为,
    2. 在生成时创建的嵌入库路径列表,
    3. 库是否进行运行时路径查找,
    4. 内部名称,
    5. 等。

    这样的实用程序可用于Solaris吗?

    编辑: 怪异!感谢下面的mark4o的回答,我重新访问了典型System.so的elfdump输出(sol 10上的libm.so.2)。但是,这里有一个奇怪的部分,我输入了错误的命令:

    elfdump libm.so.2 | moe
    

    在一次意外的惊喜中,这给了我一个叫做moe的实用程序的使用信息,它的手册页描述部分说:

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

    这将帮助我解决libm.so.2 shlib在两台不同的计算机上不兼容的原因,使我不完整的可执行文件无法在一台服务器上启动。

    2 回复  |  直到 12 年前
        1
  •  2
  •   alanc    12 年前

    有关显示信息,请参见Solaris elfdump pvs 公用事业。对于调试绑定问题, lari moe 也可能有帮助。但是,这些实用程序不能修改库。

        2
  •  2
  •   alanc    12 年前

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