Bonjour à tous,
J'ai créé une bibliothèque dynamique "libconvert.so.1.0" avec un soname "libconvert.so.1". J'utilise Linux Ubuntu 11.1.
Lorsque je veux compiler un exécutable en passant à gcc cette bibliothèque avec son nom complet (sans l'option -l) ou son soname (sans l'option -l), celui ne ne la trouve pas. J'indique pourtant la bonne route complète à gcc grâce à l'option -L
Pour que mon programme compile je dois indiquer la route complète à gcc ou créer un lien manuel libconvert.so.1.0 -> libconvert.so grâce à ln et utiliser l'option -l de gcc.
En bref: (Compilation de l’exécutable, les .o sont créés)
$(CC) $(CFLAGS) $^ -L$(DSHLIB) libconvert.so.1.0 -o $@
Ne compile pas...
"libconvert.1.0 No such file or directory"
$(CC) $(CFLAGS) $^ -L$(DSHLIB) libconvert.so.1 -o $@
Après exécution de ldconfig pour creer le lien soname.
Ne compile pas...
"libconvert.1 No such file or directory"
$(CC) $(CFLAGS) $^ -L$(DSHLIB) $(DHLIB)/libconvert.so.1 -o $@
Apres execution de ldconfig pour creer le lien soname.
Compile!
$(CC) $(CFLAGS) $^ -L$(DSHLIB) lconvert.so -o $@
Après exécution de "ln -sf $(DSHLIB)/libconvert.so.1.0 $(DSHLIB)/libconvert.so" .
Compile!
Je ne comprends pas vraiment pourquoi dans les 2 premiers cas gcc ne trouve pas la bibliothèque. J'aimerais bien comprendre, cela va à l'encontre des tutoriels que j'ai lu.
Pour information la route que je passe à l'option -L de gcc est la bonne j'ai vérifié plusieurs fois.
Si vous avez une idée ou si vous avez déjà rencontré ce problème, votre aide est la bienvenue.
Merci!
Partager