Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

link d'une librairie statique utilisant une autre lib statique ?

3 réponses
Avatar
star-shoot
Bonjour,

J'ai un projet organis=E9 comme suit :
appli
|- *.cpp
|- *.h
libs
|- base
|- *.{cpp,h} -> libbase.a
|- etendue1 : utilise base
|- *.{cpp,h} -> libetendue1.a
|- etendue2 : utilise base
|- *.{cpp,h} -> libetendue2.a

Et donc mon appli utilise les deux librairies statiques etendue1 et
etendue2

Le probl=E8me c'est qu'=E0 la compilation g++ me sort des r=E9f=E9rences
inconnues sur des fonctions de la librairie base, m=EAme si j'ajoute
-lbase dans le link.

O=F9 est-ce que je me trompe dans la d=E9marche s'il vous plait ?
Merci d'avance.

Aur=E9lien.

3 réponses

Avatar
Franck Branjonneau
écrivait:

Le problème c'est qu'à la compilation g++ me sort des références
inconnues sur des fonctions de la librairie base, même si j'ajoute
-lbase dans le link.


C'est probablement du à l'ordre de tes -l. Extrait de la documentation
de gcc :

3.13 Options for Linking

[...]

`-lLIBRARY'
`-l LIBRARY'

[...]

It makes a difference where in the command you write this option;
the linker searches and processes libraries and object files in
the order they are specified. Thus, `foo.o -lz bar.o' searches
library `z' after file `foo.o' but before `bar.o'. If `bar.o'
refers to functions in `z', those functions may not be loaded.

[...]

--
Boujou t'chu tè.
Franck Branjonneau

Avatar
star-shoot
exact.
Merci !!!
Avatar
kanze
Franck Branjonneau wrote:
écrivait:

Le problème c'est qu'à la compilation g++ me sort des
références inconnues sur des fonctions de la librairie base,
même si j'ajoute -lbase dans le link.


C'est probablement du à l'ordre de tes -l. Extrait de la
documentation de gcc :


En passant, c'est général pour les éditeurs de liens sous Unix
(et semblables). Et probablement ailleurs aussi : au moins,
elle valait pour tous les éditeurs de liens que je connaissais
avant Unix aussi.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34