"RTLD_NEXT" необъявленный
Я пытаюсь скомпилировать программу на языке C, но я получаю сообщение об ошибке "RTLD_NEXT" uneclared. Я думаю, что это должно быть определено в dlfcn.h, которое включает в себя программа c, но когда я заглянул внутрь dlfcn.h, нет RTLD_NEXT.
Как это исправить?
Ответы
Ответ 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>