ensemble LD_LIBRARY_PATH de Makefile
Comment dois-je configurer le LD_LIBRARY_PATH env variable à partir d'un Makefile?
J'ai quelques code source que les liens vers une bibliothèque partagée qui à son tour des liens vers une autre bibliothèque partagée (plus de 1). Le Makefile pour la construction de l'application ne sait que sur la première bibliothèque partagée.
Si je veux construire ce, je dois préciser:
#export LD_LIBRARY_PATH=/path/to/the/shared/libs
(pour bash)
et cela fonctionne bien.
Cependant, je voudrais faire cela dans le Makefile.
OriginalL'auteur RD. | 2009-04-24
Vous devez vous connecter pour publier un commentaire.
Oui, "à l'exportation" est la directive appropriée à utiliser. Il est documenté en détail ici. C'est le même mécanisme que faire de lui-même utilise pour propager les variables de sous-marques. L'inconvénient est que vous ne pouvez pas passer sélectivement en bas de la variable à certaines commandes et pas à d'autres.
Il y a deux autres options que je peux penser de:
.EXPORT_ALL_VARIABLES
(spécifier comme une cible, quelque part), les causes de toutes les variables à être exportés vers l'environnement de sous-commandes.Spécifier sur la ligne de commande:
OriginalL'auteur JesperE
Si vous ne voulez pas exporter la variable LD_LIBRARY_PATH dans le makefile (par exemple, parce que vous avez récursive les Makefiles qui tous les ajouter à la variable), vous pouvez la conserver lié à tous les appels de votre compilateur et l'éditeur de liens.
Soit vous l'ajouter directement à tous les gcc et ld appels au sein de votre cible règles, par exemple
ou vous mondiale de rendre les variables qui définissent les compilateurs inclure le chemin d'accès, par exemple:
J'ai choisi gcc comme compilateur, mais bien sûr, vous pouvez utiliser n'importe quel compilateur vous le souhaitez.
OriginalL'auteur jkow
J'ai eu le même problème, j'ai dû export LD_LIBRARY_PATH comme vous l'avez fait:
Mon ami m'a montré une autre lors de la LD_LIBRARY_PATH ne s'applique qu'à une seule commande, avis pas de point-virgule ci-dessous.
Ce l'article explique plus.
OriginalL'auteur MioDeals
J'avais essayé d'ajouter:
qui fonctionne apparemment bien.
J'ai été faire des erreurs parce que mon /chemin/vers/le/shared/libs était incorrecte.
Serait toujours bon de savoir ce que les autres font pour cela et/que si il ya une meilleure façon.
LD_LIBRARY_PATH
serait défini pour ce processus et les processus enfants, mais pas dans le shell à partir de laquelle vous avez exécutémake
.OriginalL'auteur RD.