【问题标题】:'RTLD_NEXT' undeclared'RTLD_NEXT' 未声明
【发布时间】:2010-12-19 03:25:33
【问题描述】:

我正在尝试编译一个 C 程序,但我收到了未声明的错误“RTLD_NEXT”。我认为这应该在 c 程序包含的 dlfcn.h 中定义,但是当我查看 dlfcn.h 内部时,没有 RTLD_NEXT。

我该如何解决这个问题?

【问题讨论】:

标签: c linux include cygwin undefined


【解决方案1】:

这里的问题是 RTLD_NEXT 不是由 posix standard 定义的。所以除非你 #define _GNU_SOURCE-D_GNU_SOURCE,否则 GNU 人不会启用它。

POSIX 的其他相关部分是dlfcn.hdlsym.h。有趣的是,后面提到了RTLD_NEXT。显然,GNU 人对于什么是扩展什么不是扩展有点困惑。

【解决方案2】:

根据man dlsym,它是#define _GNU_SOURCE(只有一个前导下划线)之前包含dlfcn.h。 (RHEL6.1)。

【讨论】:

    【解决方案3】:

    尝试将#define __GNU_SOURCE 作为源代码的第一行。

    【讨论】:

    • 实际上是__USE_GNU,只是注意到这是“RTLD_NEXT”的最高 Google 搜索结果。
    • 只是一个前导下划线:#define _GNU_SOURCE.
    【解决方案4】:

    必须有一个下划线。 #define _GNU_SOURCE 此外,这必须是您的第一个预处理器指令。例如:

    #define _GNU_SOURCE  
    #include <stdio.h>
    

    【讨论】:

      猜你喜欢
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      • 2011-02-06
      • 2021-11-21
      • 2013-05-07
      • 2021-08-04
      • 2019-03-21
      相关资源
      最近更新 更多