Posté le 07/06/2015 à 11:51 Membre depuis le 18/06/2001, -26239 message
yop,

J'écris un programme qui utilise une lib perso.
J'appelle g++ ainsi, pour linker le programme : /usr/bin/g++ -o ./Debug-unix/editor @"editor.txt" -L/mnt/Data/prog/ng/ngine/Debug-unix/ -lengine
(enfin, c'est l'IDE qui appelle ça)
Comme vous pouvez voir, même en spécifiant le chemin de ma lib en absolu, et alors que engine.so se trouve dans le dossier cible, g++ me dit /usr/bin/ld: cannot find -lengine.
Je suis coincé, le bon chemin et le bon nom, pourtant ça marche pas mad

Une piste svp ?

Merci d'avance.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 07/06/2015 à 11:57 Membre depuis le 10/06/2001, 40014 messages
-lengine cherche libengine.so, pas engine.so.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 07/06/2015 à 12:07 Membre depuis le 18/06/2001, -26239 message
Tu cartonnes, merci bien top

Ceci dit, je comprends toujours pas, cf ici : https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
(oui oui, j'avais quand même cherché avant de poster)
On y lit ça : -l library Search the library named library when linking

Et ok, sur cette page, j'avais raté la phrase Link -l with library name without the lib prefix and the .a or .so extensions..

Mais du coup, les deux semblent en opposition ?
Qu'est-ce que je rate ??
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 07/06/2015 à 13:42 Membre depuis le 10/06/2001, 40014 messages
"without the lib prefix" parce qu'il est rajouté automatiquement.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 07/06/2015 à 13:43 Membre depuis le 10/06/2001, 40014 messages
C'est d'ailleurs pour ça qu'il y a des noms de bibliothèques comme libiberty (à linker avec -liberty), libowfat (à linker avec -lowfat) etc. smile
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 07/06/2015 à 13:48 Membre depuis le 18/06/2004, 268 messages
Folco (./3) :
Tu cartonnes, merci bien top

Ceci dit, je comprends toujours pas, cf ici : https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
(oui oui, j'avais quand même cherché avant de poster)
On y lit ça : -l library Search the library named library when linking

Et ok, sur cette page, j'avais raté la phrase Link -l with library name without the lib prefix and the .a or .so extensions..

Mais du coup, les deux semblent en opposition ?
Qu'est-ce que je rate ??



Sur les anciennes version de gcc (2.8.x par exemple) -lmalib va chercher malib, sur les nouvelles il cherche libmalib
Posté le 07/06/2015 à 14:20 Membre depuis le 10/06/2001, 40014 messages
2.8.x, c'était il y a longtemps, mais à ma connaissance, GCC sous GNU/Linux a toujours cherché libmalib.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 07/06/2015 à 14:39 Membre depuis le 18/06/2004, 268 messages
Kevin Kofler (./7) :
2.8.x, c'était il y a longtemps, mais à ma connaissance, GCC sous GNU/Linux a toujours cherché libmalib.


Possible qu'il y ait eu plusieurs branche de Gcc qui fonctionne différemment ?.


Ce qui est sûr, c'est que mon gcc 2.8.1 (atari) recherche bien malib pour -lmalib
Posté le 07/06/2015 à 14:40 Membre depuis le 10/06/2001, 40014 messages
Ça dépend certainement de la plateforme.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 07/06/2015 à 17:16Edité par Folco le 08/06/2015 à 23:05 Membre depuis le 18/06/2001, -26239 message
Ok, merci beaucoup.
Et comment dire à mon exécutable que la lib dont il a besoin est dans le même répertoire que lui ?
Je suis obligé d'exécuter ldconfig (donc en root), pour spécifier mon répertoire courant ?
Ou alors je dois forcément copier le .so dans /usr/lib ? J'aimerais pas non plus faire des manipulations répétées dans ce répetoire...

Ah, et au passage, comment me permet-on de lancer l'exécution d'une librairie, et comment fait-elle pour segfaulter, vu qu'elle n'est pas censée avoir d'entry point ?
folco@Foch:/mnt/Data/prog/ng/ngedit/Debug-unix$ ls
editor  libngine.so  src_main.cpp.o  src_main.cpp.o.d
folco@Foch:/mnt/Data/prog/ng/ngedit/Debug-unix$ ./libngine.so 
Segmentation fault

??
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 07/06/2015 à 19:26 Membre depuis le 10/06/2001, 40014 messages
LD_LIBRARY_PATH=`pwd` ./editor
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 07/06/2015 à 20:37 Membre depuis le 11/06/2001, 19563 messages
ou
export LD_LIBRARY_PATH=.

Et si tu veux pas de LD_LIBRARY_PATH, cf. https://blogs.oracle.com/ali/entry/avoiding_ld_library_path_the
(Bon, perso, je l'utilise depuis des années, et je n'ai toujours pas trouvé le grand "evil" dont ils parlent).
Posté le 07/06/2015 à 21:58 Membre depuis le 10/06/2001, 40014 messages
Pour nous chez Fedora, c'est plutôt rpath (l'alternative) qui est "evil".
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 07/06/2015 à 22:23 Membre depuis le 18/06/2001, -26239 message
Merci beaucoup top

Un tip pour la librarie qui accepte de s'exécuter ? J'arrive pas à exécuter celle de /usr/lib, par exemple.
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 07/06/2015 à 22:49 Membre depuis le 10/06/2001, 40014 messages
Les bibliothèques ne sont pas réellement exécutables, c'est normal. Elles portent le bit exécutable (ce qui fait que le noyau essaie de les exécuter et provoque la faute de segmentation) d'un (du côté de la chaîne d'outils) pour des raisons historiques et de deux (dans les distributions RPM) parce que les scripts qui extraient les informations de débogage pour les paquetages -debuginfo n'opèrent que sur des fichiers marqués exécutables. Mais Debian et dérivées retirent le bit exécutable des bibliothèques exactement pour la raison que tu décris. (Par ici, on est de l'avis que si tu essaies d'exécuter une bibliothèque, c'est ton problème.)
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 07/06/2015 à 22:55 Membre depuis le 18/06/2001, -26239 message
Ok, merci beaucoup. Donc si je voulais rendre ma bibliothèque Debian-compliant, je devrais faire un chmod -x.
Merci bien pour cet éclairage. smile
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 08/06/2015 à 00:57 Membre depuis le 10/06/2001, 40014 messages
Laisse plutôt Debian s'occuper de ça. Pratiquement toutes les autres distributions (qui ne sont pas dérivées de Debian) utilisent +x, et sous Fedora, les bibliothèques doivent être en +x (pour la raison déjà décrite: c'est nécessaire pour les RPMs -debuginfo).
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
Posté le 08/06/2015 à 06:16 Membre depuis le 18/06/2001, -26239 message
Ok parfait, ça marche. happy
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 08/06/2015 à 13:38 Membre depuis le 16/06/2001, 69242 messages
"the library named library" est stockée dans le fichier liblibrary.so wink
Posté le 08/06/2015 à 17:33 Membre depuis le 18/06/2001, -26239 message
ok cimer ^^
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !
Posté le 08/06/2015 à 18:05 Membre depuis le 16/06/2001, 69242 messages
riende!