【问题标题】:Linux and shared libraries, linking vs dlopen - symbol visibilityLinux 和共享库,链接 vs dlopen - 符号可见性
【发布时间】:2022-01-08 21:45:03
【问题描述】:

我在 Linux 上工作。当我的应用程序链接到共享库(不隐藏符号)时,该库中的所有符号都是可见的。共享库也可以在运行时使用dlopen 加载。是否可以使用dlopen 模式参数来控制符号的可见性,或者我总是必须使用dlsym 来获取所需的符号?

【问题讨论】:

    标签: linux shared-libraries dynamic-linking dlopen


    【解决方案1】:

    你的问题非常不清楚。

    如果您dlopen 库,那么获取任何其符号的唯一方法是通过dlsym

    但是,如果您 dlopen 一个带有 RTLD_GLOBAL 的库,那么它的符号将可用于随后使用 dlsym 加载的库没有

    例如,如果libfoo.so 定义符号foo,并且如果您dlopen("libfoo.so", RTLD_GLOBAL|...); 和以后的dlopen("libbar.so", ...) 使用 foo,那将起作用 -- libbar.so 将是能够使用来自libfoo.sofoo 而无需进行任何dlsym 调用。

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 2020-11-03
      • 2019-12-29
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      相关资源
      最近更新 更多