L'option -c de gcc indique une demande de compilation (on transforme un .c en .o) , pas d'édition des liens (on prends plusisuers .o et des bibliothèques pour créer un exécutable ou une bibliothèque).
Le makefile est mal foutu, il faut utiliser les règles implicites ⇒
#=====================
# Makefile du Cours 1
#=====================
#-------------
# Executables
#-------------
c1test1 : c1test1.o eltprim.o lstprim.o lstop.o
c1test1.o : c1test1.c
#----------
# Modules
#----------
# TDA ELEMENT
#
# -- Primitives avec realisation par "car"
#
eltprim.o : eltcar.c eltcar.h eltsdd.h eltprim.h
# -- Operations
#
# TDA LISTE
#
# -- Primitives avec realisation par faux pointeurs :
#
lstprim.o : lstcur.c lstprim.h lstsdd.h lstcur.h
# -- Operations
#
lstop.o : c1lstop.c c1lstop.h lstprim.h
#----------------------------
# Gestion generale du projet
#----------------------------
.PHONY: all clean tags
all : c1test1
clean :
rm *.o
tags :
etags *.c *.h
Il manque sans doute pas mal de header pour c1test1.o
Et encore mieux, utiliser l'option -MMD pour que gcc genere automatiquement les dépendances pour chaque module objet.
Comme ça il suffit de dire quels .o composent un exécutable, et hop, les lignes 11 à 39 sautent, remplacées par
-include (wildcard *.d)
Penser à définir CFLAGS avec des valeurs décentes -Wall -Wextra, standard utilisé, optimisation ou début,...
- Edité par michelbillaud 6 octobre 2021 à 17:57:01
lien des fichiers dans un makefile
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.