Como adicionar o caminho das bibliotecas ao comando ./configure?

51

Gostaria ./configurede vincular a uma biblioteca e alguns incluem arquivos. Minha biblioteca é armazenada /home/foo/sw/lib/e meus arquivos são armazenados /home/foo/sw/include.

./configure --help lança o seguinte:

Algumas variáveis ​​de ambiente 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

Eu tentei várias combinações:

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

Mas não consigo entender a sintaxe corretamente. Se alguém puder me ajudar, isso seria muito apreciado. OBRIGADO!

Black Adder
fonte

Respostas:

58

Você perdeu o significado de

Algumas variáveis ​​de ambiente influentes :

Então você os define como uma variável de ambiente; configure determina LDFLAGS e CPPFLAGS verificando arquivos de configuração e o ambiente. Você pode configurá-los assim ...

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

ou como uma linha:

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

Observe que é possível que você não possa usar subdiretórios em /home/foo/sw/lib/

colocar sua biblioteca /home/foo/sw/lib/bar/pode mostrar um lib not founderro.

No entanto, você pode usar várias entradas:

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

Rinzwind
fonte
4
Talvez CPPFLAGS = '- I / home / foo / sw / incluem: $ CPPFLAGS' apenas no caso de algo está lá fora;)
Braiam
11
Olá Rinzwind. Estou confuso sobre a diferença entre LDFLAGS=-Le LIBS=-l. De acordo com a ajuda, eles parecem ser a mesma coisa. Existe alguma diferença?
precisa saber é o seguinte
@ user15964 -Lrefere-se a um diretório para procurar bibliotecas enquanto -linforma o vinculador a vincular-se a uma biblioteca específica (para descobrir qual ele pesquisará os -Ldiretórios fornecidos ao lado do conjunto padrão.)
sherrellbc
Por que existe um /depois, LDFLAGSmas não depois CPPFLAGS? Isso é um erro de digitação ou é importante?
vy32
não perse, trabalho e não. O / no final significa que é um diretório, mas não é necessário incluir também.
Rinzwind