#1 Le 22/10/2017, à 23:14
- GimliA
Référence indéfinie vers « main »
Bonsoir, j’essaie de faire un peu de C de mon coté pour préparé mes cours et j'ai un message d'erreur que je ne comprend pas. J'ai cherché un peu sur le site mais les quelques sujets que je trouvé ne m'ont pas aidé. Si vous pouvez faire quelque chose merci.
alban@alban-desktop:~/Documents/langC/MYLIB$ make
g++ mylib.o -o mylib
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o : Dans la fonction « _start » :
(.text+0x20) : référence indéfinie vers « main »
collect2: error: ld returned 1 exit status
<commande interne> : la recette pour la cible « mylib » a échouée
make: *** [mylib] Erreur 1
Le makefile:
CC=g++
FLAGS=-Wall -Werror -g
all: mylib
prog: mylib.o main.o
$(CC) main.o mylib.o -o mylib
fonctions.o: mylib.c mylib.h
$(CC) -c mylib.c $(FLAGS) -o mylib.o
main.o: main.c mylib.h
$(CC) -c main.c $(FLAGS) -o main.o
clean:
rm -f *.o
rm -f mylib
Le main:
#include "mylib.h"
#include <stdlib.h>
#include <time.h>
int main(void) {
TABint t;
srand(time(NULL));
randomInitTABint(t);
displayTABint(t,TAILLE);
return 0;
}
Le mylib.c:
#include "mylib.h"
/**
* @brief Fonction "randomInitTABint": initialise aléatoirement les
* cases du tableau avec un nombre compris entre 0 et 99.
* @param tab, tableau à initialiser
*/
void randomInitTABint(TABint tab) {
int i;
for (i = 0; i < TAILLE; i++) {
tab[i] = ((rand() % 100));
}
}
/**
* @brief Fonction "minimum d'un tableau" -> À CODER
* @param t, tableau sur lequel travailler
* @retval min, valeur minimum rencontrée
*/
int minTABint(TABint tab) {
int min,i;
for(i=0;i<TAILLE;i++){
if(i==0){
min=tab[i];
}
if(tab[i]<min){
min=tab[i];
}
}
return min;
}
/**Fonction qui affiche un tableau**/
void displayTABint(TABint tab, int dim){
int i;
for(i=0;i<dim;i++){
printf("%d ",tab[i]);
}
printf("\n");
}
et le mylib.h:
#include <stdio.h>
#include <stdlib.h>
#define TAILLE 10
typedef int TABint[TAILLE];
void randomInitTABint(TABint);
void displayTABint(TABint, int);
Hors ligne
#2 Le 23/10/2017, à 06:04
- pingouinux
Re : Référence indéfinie vers « main »
Bonjour,
Dans le makefile, remplace
prog: mylib.o main.o
par
mylib: mylib.o main.o
Ajouté :
Pour bien faire, il faudrait aussi remplacer
fonctions.o: mylib.c mylib.h
par
mylib.o: mylib.c mylib.h
mais ici il se débrouille avec les règles de compilation implicites.
Dernière modification par pingouinux (Le 23/10/2017, à 06:20)
Hors ligne
#3 Le 23/10/2017, à 06:58
- GimliA
Re : Référence indéfinie vers « main »
Mais oui, merci.
Hors ligne
#4 Le 23/10/2017, à 07:14
- pingouinux
Re : Référence indéfinie vers « main »
Si c'est bon, pense à modifier ton premier message pour ajouter [Résolu] dans le titre.
Hors ligne