33

C プログラムをコンパイルしようとしていますが、'RTLD_NEXT' undeclared というエラーが発生します。これはcプログラムに含まれるdlfcn.hで定義されているはずなのですが、dlfcn.hの中を見てみるとRTLD_NEXTがありません。

これを修正するにはどうすればよいですか?

4

4 に答える 4

39

ここでの問題は、 posix 標準RTLD_NEXTで定義されていないことです。したがって、GNU の人々は、あなたまたは.#define _GNU_SOURCE-D_GNU_SOURCE

POSIX の他の関連部分はdlfcn.hdlsym.hです。興味深いことに、後で言及しますRTLD_NEXT。どうやら、GNU の人々は、何が拡張機能で何がそうでないかについて少し混乱しているようです。

于 2009-11-22T01:46:05.537 に答える
10

man dlsymit によると、が含まれる前に#define _GNU_SOURCE(先頭のアンダースコアが 1 つだけ)あります。(RHEL6.1)。dlfcn.h

于 2011-12-12T08:34:07.507 に答える
5

#define __GNU_SOURCEソースの最初の行として試してください。

于 2009-11-22T01:37:25.243 に答える
3

アンダースコアが 1 つ必要です。#define _GNU_SOURCE さらに、これは最初のプリプロセッサ ディレクティブである必要があります。例:

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