URL: https://linuxfr.org/forums/programmation-c--2/posts/compilation-et-utilisation-bibliotheque-dynamique Title: Compilation et utilisation bibliothèque dynamique Authors: DebutantC Date: 2024年01月21日T15:59:02+01:00 License: CC By-SA Tags: langage_c et bibliothèque Score: 1 Bonjour, Je butte depuis plusieurs heures sur un problème, où j'en suis convaincu, il ne manque qu'un petit détail. J'ai un fichier testLib.c et un fichier d'entête testLib.h pour créer une biblio libtestLib.so testLib.c : ```c #include "testLib.h" int addition(int a, int b) { return a+b; } ``` testLib.h : ```c int addition(int a, int b); ``` Pour compiler, j'utilise les commandes suivantes : ```bash rm -f testLib.o gcc -fomit-frame-pointer -O3 -Wunreachable-code -Wextra -Wall -std=gnu17 -fPIC -m64 -march=native -mtune=native -c -o testLib.o testLib.c rm -f libtestLib.so gcc -shared -s -o libtestLib.so testLib.o ``` Le résultat est le fichier libtestLib.so de 14040 octets. En faisant `nm -D libtestLib.so`, j'obtiens : ``` 0000000000001100 T addition w __cxa_finalize w __gmon_start__ w _ITM_deregisterTMCloneTable w _ITM_registerTMCloneTable ``` Pour utiliser cette bibliothèque, le fichier source useTestLib.c fait l'affaire : ```c #include #include "testLib.h" int main(void) { printf("%d\n", addition(2, 3)); return 0; } ``` Pour compiler : ```bash rm -f useTestLib.o gcc -fomit-frame-pointer -O3 -m64 -Wunreachable-code -Wextra -Wall -std=gnu17 -m64 -march=native -mtune=native -c -o useTestLib.o useTestLib.c rm -f useTestLib gcc -s -L. -ltestLib -o useTestLib useTestLib.o ``` Et là, c'est le drame : ``` /usr/bin/ld : useTestLib.o : dans la fonction « main » : useTestLib.c:(.text.startup+0x13) : référence indéfinie vers « addition » collect2: error: ld returned 1 exit status ``` Merci de m'avoir lu jusqu'ici. Si en plus, vous aviez une idée...

AltStyle によって変換されたページ (->オリジナル) /