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.