33

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

我该如何解决?

4

4 回答 4

39

这里的问题是posix 标准RTLD_NEXT没有定义。所以除非你或.#define _GNU_SOURCE-D_GNU_SOURCE

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

于 2009-11-22T01:46:05.537 回答
10

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

于 2011-12-12T08:34:07.507 回答
5

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

于 2009-11-22T01:37:25.243 回答
3

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

#define _GNU_SOURCE  
#include <stdio.h>
于 2017-12-14T05:02:16.100 回答