Comment ajouter le chemin des bibliothèques à la commande ./configure?


51

J'aimerais créer un ./configurelien vers une bibliothèque et des fichiers d'inclusion. Ma bibliothèque est stockée dans /home/foo/sw/lib/et mes fichiers sont stockés dans /home/foo/sw/include.

./configure --help jette ce qui suit:

Quelques variables d'environnement influentes:

  CC           C compiler command
  CFLAGS       C compiler flags
  LDFLAGS      linker flags, e.g. -L<lib dir> if you have libraries in a 
               nonstandard directory <lib dir>
  LIBS         libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS     (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if 
               you have headers in a nonstandard directory <include dir>
  CPP          C preprocessor

J'ai essayé diverses combinaisons:

./configure --prefix=/home/foo/sw -I</home/foo/sw/include> -L</home/foo/sw/lib/>
./configure --prefix=/home/foo/sw -I=/home/foo/sw/include -L=/home/foo/sw/lib/
./configure --prefix=/home/foo/sw -I/home/foo/sw/include -L/home/foo/sw/lib/
etc..

Mais je n'arrive pas à comprendre la syntaxe. Si quelqu'un pouvait m'aider, ce serait grandement apprécié. MERCI!

Réponses:


58

Vous avez manqué le sens de

Quelques variables d'environnement influentes :

Donc, vous les définissez comme une variable d'environnement; configure détermine LDFLAGS et CPPFLAGS en vérifiant les fichiers de configuration et l'environnement. Vous pouvez les définir comme ça ...

export CPPFLAGS='-I/home/foo/sw/include/'
export LDFLAGS='-L/home/foo/sw/lib/'
./configure

ou comme one-liner:

env CPPFLAGS='-I/home/foo/sw/include/' LDFLAGS='-L/home/foo/sw/lib/' ./configure

Veuillez noter qu'il est possible que vous ne puissiez pas utiliser les sous-répertoires sous /home/foo/sw/lib/

Par exemple, mettre votre bibliothèque /home/foo/sw/lib/bar/peut vous montrer une lib not founderreur.

Cependant, vous pouvez utiliser plusieurs entrées:

LDFLAGS="-L/home/foo/sw/lib/ -L/home/foo/bar/lib/"


4
Peut-être que CPPFLAGS = '- I / home / toto / sw / inclut: $ CPPFLAGS' juste au cas où il y aurait quelque chose à l'extérieur;)
Braiam

1
Bonjour Rinzwind Je suis confus quant à la différence entre LDFLAGS=-Let LIBS=-l. Selon l'aide, ils semblent être la même chose. Y a-t-il une différence?
user15964

@ user15964 -Lfait référence à un répertoire dans lequel rechercher des bibliothèques tout en -linformant l’éditeur de liens de faire le lien avec une bibliothèque spécifique (pour trouver lequel il cherchera dans les -Lrépertoires fournis à côté du jeu par défaut.
sherrellbc

Pourquoi y a-t-il un /après LDFLAGSmais pas après CPPFLAGS? Est-ce une faute de frappe ou est-ce important?
vy32

pas perse, les deux travaillent et non. Le / à la fin signifie que c'est un répertoire mais il n'est pas nécessaire d'inclure.
Rinzwind le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.