You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询链接器脚本目标?解决dlopen加载libm.so失败问题

dlopen加载libm.so在RHEL9中失败的解决需求

现有一段C++代码通过dlopen加载libm.so库:

dlopen("libm.so", RTLD_GLOBAL | RTLD_NOW);
  • 在RHEL7系统中,libm.so是软链接:
    libm.so -> libm.so.6
    
  • 在RHEL9系统中,libm.so变为链接器脚本,执行cat libm.so得到内容如下:

    /* GNU ld script
    */
    OUTPUT_FORMAT(elf64-x86-64)
    GROUP ( /lib64/libm.so.6 AS_NEEDED ( /lib64/libmvec.so.1 ) )

这种差异导致dlopen()调用失败,因为系统无法解析链接器脚本。目前唯一可行的临时方案是将库名硬编码为dlopen("libm.so.6", ...),希望找到以下两种替代方案之一:

  • 动态查询libm.so对应的版本号(比如“6”),避免硬编码
  • 在构建阶段解析链接器脚本,自动获取实际需要加载的目标库路径

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 05:58:12