Utilisation appropriée libdl et liée de façon dynamique les bibliothèques

J'ai besoin de lier dynamiquement une bibliothèque que j'ai créé. Je ne suis pas sûr de savoir exactement ce qu'est la question. Tout se compile correctement, mais j'ai toujours attraper handle comme le NULL pointeur:

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);
}

Je ne peux pas obtenir passé cette erreur et je ne suis pas sûr de ce que pourrait éventuellement être faux. Je suis assez sûr que j'ai compilé tout correctement. Voici la compilation des mesures que j'ai utilisé:

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

J'obtiens une erreur qui lit

seulement ET_DYN et ET_EXEC peut être chargé.

OriginalL'auteur Michael Schilling | 2011-12-03