Makefile pour lib partager
Résolu/Fermé
astrocurieux
Messages postés
334
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
29 novembre 2019
-
Modifié par astrocurieux le 27/01/2017 à 17:43
astrocurieux Messages postés 334 Date d'inscription mardi 24 février 2015 Statut Membre Dernière intervention 29 novembre 2019 - 29 janv. 2017 à 12:08
astrocurieux Messages postés 334 Date d'inscription mardi 24 février 2015 Statut Membre Dernière intervention 29 novembre 2019 - 29 janv. 2017 à 12:08
A voir également:
- Makefile pour lib partager
- Partager agenda google - Guide
- Comment partager des photos - Guide
- Impossible d'obtenir le verrou /var/lib/dpkg/lock-frontend - Forum Ubuntu
- Partager calendrier outlook avec gmail - Guide
- Partager une playlist spotify - Guide
4 réponses
yg_be
Messages postés
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
28 janv. 2017 à 13:58
28 janv. 2017 à 13:58
bonjour, je pense que quand tu appelles "make", il ne s'occupe que de la première cible: donc il te suffit de mettre la règle avec la cible "all" comme première règle.
yg_be
Messages postés
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
Modifié par yg_be le 28/01/2017 à 16:57
Modifié par yg_be le 28/01/2017 à 16:57
je pense que tu devrais avoir une règle qui indique le .h de ta lib comme une dépendance de main.o.
et pourquoi pas aussi une règle:
et pourquoi pas aussi une règle:
%.o: %.c
$(CC) -o $@ -c $< $(CFLAGS)
yg_be
Messages postés
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
28 janv. 2017 à 17:12
28 janv. 2017 à 17:12
Spécifies-tu LD_LIBRARY_PATH="." quand tu exécutes ton programme?
astrocurieux
Messages postés
334
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
29 novembre 2019
11
28 janv. 2017 à 17:27
28 janv. 2017 à 17:27
je ne fait qu'un 'make' lors de la compilation, rien de plus.
et j’exécute directement mon exécutable sans ajout sur la ligne de commande.
je pensais que mon FLAG '-L.' remplacer justement la ligne de commande LD_LIBRARY_PATH .... autrement non je ne le fait pas ...
je ne comprend pas bien ce que fait ta règle dans ton avant dernier message.
merci de ta réactivité.
et j’exécute directement mon exécutable sans ajout sur la ligne de commande.
je pensais que mon FLAG '-L.' remplacer justement la ligne de commande LD_LIBRARY_PATH .... autrement non je ne le fait pas ...
je ne comprend pas bien ce que fait ta règle dans ton avant dernier message.
merci de ta réactivité.
yg_be
Messages postés
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
28 janv. 2017 à 19:31
28 janv. 2017 à 19:31
qu'est-ce que cela donne avec LD_LIBRARY_PATH="." quand tu exécutes ton programme?
astrocurieux
Messages postés
334
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
29 novembre 2019
11
28 janv. 2017 à 19:58
28 janv. 2017 à 19:58
aucun changement apparent ...
toujours la même erreur .
toujours la même erreur .
yg_be
Messages postés
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
28 janv. 2017 à 19:37
28 janv. 2017 à 19:37
et ainsi?
CXFLAGS = -L. -lmy_malloc -Wl,-rpath,.
astrocurieux
Messages postés
334
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
29 novembre 2019
11
28 janv. 2017 à 20:02
28 janv. 2017 à 20:02
waouw, ça fonctionne super !!!
plus aucune erreur a l'horizon !
merci beaucoup yg_be, tu m’enlève une grosse épine du pied !
mais a quoi corresponde ses deux flags ?
plus aucune erreur a l'horizon !
merci beaucoup yg_be, tu m’enlève une grosse épine du pied !
mais a quoi corresponde ses deux flags ?
yg_be
Messages postés
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
28 janv. 2017 à 20:11
28 janv. 2017 à 20:11
le premier flag, Wl, indique au compilateur que le l'option est un paramètre pour le loader, et le rpath indique où le programme devra aller chercher les librairies à l’exécution.
sans ces options, le programme va chercher les librairies à un endroit commun pour tous les programmes.
sans ces options, le programme va chercher les librairies à un endroit commun pour tous les programmes.
astrocurieux
Messages postés
334
Date d'inscription
mardi 24 février 2015
Statut
Membre
Dernière intervention
29 novembre 2019
11
29 janv. 2017 à 12:08
29 janv. 2017 à 12:08
c'est compris, merci encore!
bonne fin de weekend !
bonne fin de weekend !
28 janv. 2017 à 16:02
il me compilera a chaque fois la lib + le programme, hors je veut qu'il soit en mesure de me laisser le choix d'ou la règle All ...
merci de ta réponse yg_be, je reste a l'ecoute si tu a d'autre idée, je continue de chercher de mon coté.
Bon weekend !
Modifié par yg_be le 28/01/2017 à 16:34
si tu ne spécifie rien, il s'occupe de la première cible, donc uniquement de la librairie.
normalement make recompile uniquement si une dépendance a changé: si il recompile la librairie à chaque fois, même si les sources n'ont pas changé, tu as un problème avec ton chouette fichier.
28 janv. 2017 à 17:03
j'ai remonter mon 'all' et ça marche bien mieux.
j'ignorer totalement que la position d'une règle dans un Makefile donner une certaine 'priorité' , je suis heureux de l'avoir appris, ça va bien me servir par la suite.
j'ai donc un Makefile qui me compile tout avec un simple 'Make' a présent.
merci yg_be.
aurais tu également une petite idée de pourquoi j’obtiens mon erreur cité plus haut ?
je crois que cela doit provenir de mon LD_PRELOAD ou peut etre de LD_LIBRARY_PATH ? étant donner que je ne les utilises pas cela doit influencer non ?