Bonjour,
Je me suis remis depuis peu au langage c alors j'ai voulu compiler un petit bout de code linké avec une bibliothèque statique en .a.
Mais gcc m'a répondu "Référence indéfinie vers bonjour", bonjour étant une fonction de ma bibliothèque.
Pour info, j'ai un dossier include ou sont les en-têtes .h, sinon le reste (bonjour.c, la bibliothèque .a et main.c) sont dans le même dossier que include.
Voici mon main.c
#ifndef stdio_h
#define stdio_h
#include <stdio.h>
#endif
#ifndef stdlib_h
#define stdlib_h
#include <stdlib.h>
#endif
#ifndef bonjour_h
#define bonjour_h
#include "bonjour.h"
#endif
int main(int argc, char const *argv[])
{
printf("Bonsoir\n");
bonjour();
return 0;
}
bonjour.c :
#ifndef stdio_h
#define stdio_h
#include <stdio.h>
#endif
#ifndef stdlib_h
#define stdlib_h
#include <stdlib.h>
#endif
#ifndef bonjour_h
#define bonjour_h
#include "bonjour.h"
#endif
void bonjour(void)
{
printf("bonjour !\n");
}
bonjour.h :
void bonjour(void);
Voici les étapes que j'ai faites :
$ gcc -I./include -c bonjour.c
$ ar crs libbonjour.a bonjour.o
$ gcc -I./include -L./ -lbonjour main.c
Voici l'erreur :
/usr/bin/ld : /tmp/cciLotbk.o : dans la fonction « main » :
main.c:(.text+0x20) : référence indéfinie vers « bonjour »
collect2: error: ld returned 1 exit status
En essayant avec bonjour.o, sa marche mais pas avec .a.
Peut être est-ce l'indexage avec ar car je ne m'y connais pas trop sur sa.
Je suis bloqué depuis 12h, sa tombe l'erreur est basique mais j'avoue être perdu.
Ps: Je suis sur ubuntu 20.04