Re: C++ et includes

Top Page

Reply to this message
Author: Hugues Levasseur
Date:  
To: guilde
Subject: Re: C++ et includes
Clair et précis : Merci Edgar.

Hugues

Le 22/10/2019 à 20:47, Edgar Bonet a écrit :
> Bonsoir !
>
> Hugues Levasseur a écrit :
>> /usr/bin/ld : [...] référence indéfinie
> Quand tu écris un programme C++ réparti en plusieurs fichiers source, le
> build se fait en deux étapes :
>
> 1. compiler chaque fichier source en un fichier objet
> 2. lier ces fichiers objets en un exécutable.
>
> Le message d'erreur que tu vois n'est pas un problème de compilation à
> proprement parler. Il provient de ld, l'éditeur de liens. Il dit qu'il
> n'a pas trouvé une fonction que tu as appelée. Et pour cause, elle était
> définie ailleurs.
>
> Il faut que tu appelles g++ avec l'option -c. Ça veut dire « compile,
> mais ne fais pas d'édition de liens dans la foulée ». Une fois que tu as
> tous les fichiers objet, tu rappelles g++ une dernière fois en lui
> donnant à manger ces objets, et avec l'option -o pour indiquer le
> fichier de sortie :
>
>     g++ -c fonctions.cpp   # → fonctions.o
>     g++ -c binaire-V5.cpp  # → binaire-V5.o
>     g++ fonctions.o binaire-V5.o -o binaire-V5  # édition de liens

>
> Ci-dessous un Makefile adapté. Une fois que tu as le bon Makefile, tu
> peux juste taper « make ».
>
> À+,
>
> Edgar.
>
> -- 8< ------------------------------------------------------------------
> CXXFLAGS = -O -Wall -Wextra
>
> binaire-V5: fonctions.o binaire-V5.o
>     g++ $^ -o $@

>
> %.o: %.cpp
>     g++ $(CXXFLAGS) -c $<

>
> fonctions.o: fonctions.h
> binaire-V5.o: fonctions.h
>
> clean:
>     rm -f fonctions.o binaire-V5.o binaire-V5

>
> .PHONY: clean
> -- 8< ------------------------------------------------------------------
>