Подтвердить что ты не робот

"RTLD_NEXT" необъявленный

Я пытаюсь скомпилировать программу на языке C, но я получаю сообщение об ошибке "RTLD_NEXT" uneclared. Я думаю, что это должно быть определено в dlfcn.h, которое включает в себя программа c, но когда я заглянул внутрь dlfcn.h, нет RTLD_NEXT.

Как это исправить?

4b9b3361

Ответ 1

Проблема здесь в том, что RTLD_NEXT не определяется стандартом posix. Поэтому пользователи GNU не активируют его, если вы не #define _GNU_SOURCE или -D_GNU_SOURCE.

Другие соответствующие части POSIX dlfcn.h и dlsym.h. Интересно, что позднее упоминается RTLD_NEXT. По-видимому, люди GNU немного смущены тем, что является расширением, а что нет.

Ответ 2

В соответствии с man dlsym это #define _GNU_SOURCE (только одно подчеркивание) перед включением dlfcn.h. (RHEL6.1).

Ответ 3

Попробуйте #define __GNU_SOURCE как первую строку в ваших источниках.

Ответ 4

Должно быть одно подчеркивание. #define _GNU_SOURCE Кроме того, это должна быть ваша первая препроцессорная директива. Например:

#define _GNU_SOURCE  
#include <stdio.h>