Правильное использование libdl и динамически подключаемых библиотек

Мне нужно динамически связать библиотеку, которую я создал. Я не совсем уверен, в чем проблема. Все компилируется правильно, но я всегда ловлю дескриптор как указатель NULL :

void *handle;
char *error;
handle = dlopen ("./hw11-lib-michaelSchilling.so", RTLD_LAZY);
//same error comes up with full path as well as './hw11...'
if(!handle){
    error = dlerror();
    printf("%s\n", error);
    printf("Error loading library.\n");
    exit(1);
}

Я не могу передать эту ошибку, и я не уверен, что могло быть не так. Я почти уверен, что все правильно скомпилировал. Вот шаги компиляции, которые я использовал:

gcc -rdynamic -c hw11-lib-michaelSchilling.c -o hw11-lib-michaelSchilling.so
gcc hw11-michaelSchilling-4.c -ldl -o hw11-michaelSchilling-4

Я получаю сообщение об ошибке

, могут быть загружены только ET_DYN и ET_EXEC.

10
задан Evan Carroll 4 January 2018 в 18:00
поделиться