Makefile pour lib partager
Résolu/Fermé
Utilisateur anonyme
-
Modifié par astrocurieux le 27/01/2017 à 17:43
Utilisateur anonyme - 29 janv. 2017 à 12:08
Utilisateur anonyme - 29 janv. 2017 à 12:08
A voir également:
- Makefile pour lib partager
- Créer un lien pour partager des photos - Guide
- Partager ma position actuelle - Guide
- Partager abonnement - Accueil - Services en ligne
- Partager une playlist spotify - Guide
- Partager agenda google - Guide
4 réponses
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
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
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
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
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
28 janv. 2017 à 17:12
28 janv. 2017 à 17:12
Spécifies-tu LD_LIBRARY_PATH="." quand tu exécutes ton programme?
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
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
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?
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
28 janv. 2017 à 19:37
28 janv. 2017 à 19:37
et ainsi?
CXFLAGS = -L. -lmy_malloc -Wl,-rpath,.
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
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.
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 ?