¿Cómo agregar la ruta de las bibliotecas al comando ./configure?

51

Me gustaría ./configurevincular a una biblioteca y algunos incluyen archivos. Mi biblioteca está almacenada /home/foo/sw/lib/y mis archivos están almacenados en /home/foo/sw/include.

./configure --help tira lo siguiente:

Algunas variables de entorno influyentes:

  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

He intentado varias combinaciones:

./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..

Pero parece que no puedo entender bien la sintaxis. Si alguien me puede ayudar, eso sería muy apreciado. ¡GRACIAS!

BlackAdder
fuente

Respuestas:

58

Te perdiste el significado de

Algunas variables de entorno influyentes :

Entonces los configura como una variable de entorno; configure determina LDFLAGS y CPPFLAGS verificando los archivos de configuración y el entorno. Puedes configurarlos así ...

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

o como una línea:

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

Tenga en cuenta que es posible que no pueda usar subdirectorios en /home/foo/sw/lib/

Si coloca su biblioteca, /home/foo/sw/lib/bar/podría mostrarle un lib not founderror.

Sin embargo, puede usar múltiples entradas:

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

Rinzwind
fuente
44
Quizás CPPFLAGS = '- I / home / foo / sw / include: $ CPPFLAGS' solo en caso de que algo esté ahí afuera;)
Braiam
1
Hola rinzwind Estoy confundido acerca de la diferencia entre LDFLAGS=-Ly LIBS=-l. Según la ayuda, parecen ser lo mismo. ¿Hay alguna diferencia?
user15964
@ user15964 se -Lrefiere a un directorio para buscar bibliotecas mientras -linforma al vinculador para que se vincule con una biblioteca específica (para encontrar cuál buscará en los -Ldirectorios suministrados junto con el conjunto predeterminado.
sherrellbc
¿Por qué hay un /después LDFLAGSpero no después CPPFLAGS? ¿Es eso un error tipográfico o es importante?
vy32
no perse, tanto trabajo como no. El / al final significa que es un directorio pero no es necesario incluirlo también.
Rinzwind