Bonsoir,
Je n'arrive pas à créer et utiliser une bibliothèque sous Linux. Voici mon code :
test.c :
mylib/testlib.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "my_lib/testlib.h" int main(void) { affichage("Hello World"); return 0; }
mylib/testlic.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #define _GNU_SOURCE #include <stdio.h> #include <dlfcn.h> extern int affichage(const char *message);
Je compile la bibliothèque comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "stdio.h" int affichage(const char *message) { int result=puts("Hello World\n"); return result; }
et pour le fichier test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 cd mylib gcc -c -fPIC testlib.c gcc -shared -Wl,-soname,mylib.so.1 testlib.o -o mylib.so.1
La biliothèque semble ok (si j'utiloise objdump, je vois bien ma fonction affichage)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gcc -c test.c -l<chemin de ma bibliothèque> -o test
Par contre le fichier test compilé est un fichier ELF (file test retourne binen un format ELF), mais il est invalide.
ldd test me répond "n'est pas un executable dynamique".
Merci pour votre aide.
Partager