[gcc] créer une bibliothèque partagée
Salut,
je crois que je vais devenir dingue avec ce code!!! :cry:
Alors, avant que le pc ne finisse par apprendre à voler, je viens chercher de l'aide sur le forum...
Ma config : PC sous Linux, code : c, compilo : gcc.
Voici donc mon soucis : j'essai de créer une bibliothèque partagée libOutil.so et un exécutable essai qui s'appuie dessus.
Pour créer la lib, j'ai plusieurs fichiers .c et .h. Certains .c incluent des .h que j'ai fait et d'autres .h comme assrt.h, ou Xm/Xm.h.
Pour compiler et linker j'utilise un makefile, en gros pour chaque .c (fic.c) j'utlise la règle suivante :
Code:
gcc -c -g -fPIC -std=c89 -ansi -Dxxx -o fic.o fic.c
avec -Dxxx des flags de compil (exemple : -DLINUX)
Pour linker la lib:
Code:
gcc -o libOutil.so fic1.o fic2.o ... -L/usr/X11R6/lib -lXm -lXt -lX11 -shared
Pour créer l'exécutable j'utilise:
Code:
1 2 3
|
gcc -c essai.c -g -fPIC -std=c89 -ansi -Dxxx
gcc -o essai essai.o -g -fPIC -std=c89 -ansi -Dxxx -L/usr/X11R6/lib -lXm -lXt -lX11 -lOutil |
En réponse j'ai:
Code:
1 2 3 4 5 6
|
libOutils.so: undefined reference to 'UxDisplay'
libOutils.so: undefined reference to 'UxScreen'
libOutils.so: undefined reference to 'assert'
libOutils.so: undefined reference to ''c_VG_revision'
... |
- c_VG_revision est déféni dans un fichier .h inclue dans 2 fichiers .c de la lib
- les autres sont définies dans des .h de X11R6
Voilà, est-ce que quelqu'un peut m'aider ? (si ce n'est pas conpréhensible dite-le).
Cordialement,
Jula.