Bonjour à tous,

Me voici dans cette situation :

Je possède deux bibliothèques, lib1.a et lib2.a. lib2.a utilise liba.a.

Les deux compiles correctement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
LIB=lib1
OBJ= $(SRC:.cpp=.o)
 
all : $(LIB)
 
lib1 : $(OBJ)
	ar rcs $(LIB).a $^ $(LDFLAGS)
 
$(OBJ): %.o: %.cpp
	@$(CC) -o $@ -c $< $(CFLAGS)
(pareil pour lib2.a)

En revanche lorsque j'essaye de compiler un exécutable lié avec lib2.a, j'ai des erreurs m'indiquant que lib2.a possède des symboles indéfinis qui sont présents dans lib1.a.

En suivant le même principe pour le makefile :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
App : $(OBJ)
   g++ -o app $^ lib2.a
Erreur :

lib2_fichier.cpp.text+0x48): référence indéfinie vers « lib2::ns::MaClasse::MaFonction(bool) »
Alors ma question principale est :
- Est-ce que la dépendance de lib2.a envers lib1.a doit se gérer au niveau de la construction de lib2.a ou celle de "app" ?

Ensuite si vous pouviez me donner une piste pour faire avancer les choses, ça serait bien sympa

Merci par avance,

A bientôt