我正在尝试编译C程序,但我收到错误'RTLD_NEXT'未声明。我认为这应该在dlfcn.h中定义,c程序包含,但是当我查看dlfcn.h时,没有RTLD_NEXT。
我该如何解决这个问题?
答案 0 :(得分:30)
此处的问题是RTLD_NEXT
未定义#define _GNU_SOURCE
。因此,除非您-D_GNU_SOURCE
或RTLD_NEXT
。
POSIX的其他相关部分是posix standard和dlfcn.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>