Come aggiungere il percorso delle librerie al comando ./configure?


51

Vorrei ./configurecollegarmi a una libreria e alcuni includono file. La mia libreria è archiviata /home/foo/sw/lib/e i miei file sono archiviati in /home/foo/sw/include.

./configure --help elimina quanto segue:

Alcune variabili d'ambiente influenti:

  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

Ho provato varie combinazioni:

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

Ma non riesco a capire bene la sintassi. Se qualcuno mi può aiutare, sarebbe molto apprezzato. GRAZIE!

Risposte:


58

Hai perso il significato di

Alcune variabili d'ambiente influenti :

Quindi le impostate come variabili d'ambiente; configure determina LDFLAGS e CPPFLAGS controllando i file di configurazione e l'ambiente. Puoi impostarli in questo modo ...

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

o come one-liner:

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

Si noti che è possibile che non sia possibile utilizzare le sottodirectory in /home/foo/sw/lib/

fe inserendo la tua libreria /home/foo/sw/lib/bar/potrebbe mostrarti un lib not founderrore.

Tuttavia è possibile utilizzare più voci:

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


4
Forse CPPFLAGS = '- I / home / foo / sw / include: $ CPPFLAGS' nel caso in cui qualcosa sia là fuori;)
Braiam

1
Ciao Rinzwind. Sono confuso sulla differenza tra LDFLAGS=-Le LIBS=-l. Secondo l'aiuto, sembrano essere la stessa cosa. C'è qualche differenza?
user15964

@ user15964 -Lfa riferimento a una directory per cercare le librerie mentre -linforma il linker di collegarsi a una libreria specifica (per scoprire quale cercherà le -Ldirectory fornite insieme al set predefinito.
sherrellbc

Perché c'è un /dopo LDFLAGSma non un dopo CPPFLAGS? È un refuso o è importante?
vy32

non perse, sia lavoro che no. Il / alla fine indica che è una directory ma non è necessario includere anche.
Rinzwind
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.