C ';RTLD#U NEXT';未申报的

C ';RTLD#U NEXT';未申报的,c,linux,include,cygwin,undefined,C,Linux,Include,Cygwin,Undefined,我正试图编译一个C程序,但未声明错误“RTLD_NEXT”。我认为这应该在c程序包含的dlfcn.h中定义,但是当我查看dlfcn.h内部时,接下来没有RTLD_ 如何修复此问题?尝试将定义为源代码中的第一行。这里的问题是RTLD\u NEXT不是由定义的。因此,GNU人员不会启用它,除非您定义GNU源代码或-D_GNU源代码 POSIX的其他相关部分包括和。有趣的是,后面提到了RTLD\u NEXT。显然,GNU的人对什么是扩展和什么不是有点困惑。根据mandlsym的说法,在dlfcn.h被

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


如何修复此问题?

尝试将
定义为源代码中的第一行。

这里的问题是
RTLD\u NEXT
不是由定义的。因此,GNU人员不会启用它,除非您定义GNU源代码或
-D_GNU源代码


POSIX的其他相关部分包括和。有趣的是,后面提到了
RTLD\u NEXT
。显然,GNU的人对什么是扩展和什么不是有点困惑。

根据
mandlsym
的说法,在
dlfcn.h
被包含之前,它是
#define(仅一个前导下划线)。(RHEL6.1)。

必须有一个下划线<代码>定义GNU源代码
此外,这必须是您的第一个预处理器指令。例如:

#define _GNU_SOURCE  
#include <stdio.h>
定义GNU源
#包括

如果你正在定义“GNU”源代码但没有成功,那么最好链接到,并告诉我们Linux发行版和gcc的确切版本。@bmarglies:他使用的是cygwin(请参阅),它不支持
RTLD\u NEXT
(请参见示例)。它实际上是
\u USE\u GNU
,因为这是“RTLD\u NEXT”的谷歌最佳结果现在,它只是一个前导下划线:
#define _GNU_SOURCE