'RTLD_NEXT'未声明

neu*_*cer 26 c linux cygwin undefined include

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

我该如何解决?

bma*_*ies 31

这里的问题是posix标准RTLD_NEXT没有定义.所以GNU人不会启用它,除非你或.#define _GNU_SOURCE-D_GNU_SOURCE

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


小智 10

man dlsym#define _GNU_SOURCE(只是一个前导下划线)之前dlfcn.h被包括在内.(RHEL6.1).


use*_*104 4

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

  • 它实际上是`__USE_GNU`,只是注意到这是现在“RTLD_NEXT”的Google搜索结果。 (9认同)
  • 它只是*一个*前导下划线:`#define _GNU_SOURCE`。 (4认同)