'RTLD_NEXT'未声明

时间:2009-11-22 01:06:16

标签: c linux include cygwin undefined

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

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:30)

此处的问题是RTLD_NEXT未定义#define _GNU_SOURCE。因此,除非您-D_GNU_SOURCERTLD_NEXT

,否则GNU用户不会启用它

POSIX的其他相关部分是posix standarddlfcn.h。有趣的是,后来提到{{1}}。显然,GNU人对于什么是扩展而什么不是扩展有点困惑。

答案 1 :(得分:10)

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

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

#define _GNU_SOURCE  
#include <stdio.h>