Wie füge ich den Bibliothekspfad zum Befehl ./configure hinzu?

51

Ich möchte ./configureeinen Link zu einer Bibliothek und einigen Include-Dateien erstellen. Meine Bibliothek ist in gespeichert /home/foo/sw/lib/und meine Dateien sind in gespeichert /home/foo/sw/include.

./configure --help wirft folgendes aus:

Einige einflussreiche Umgebungsvariablen:

  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

Ich habe verschiedene Kombinationen ausprobiert:

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

Aber ich kann die Syntax nicht richtig verstehen. Wenn mir jemand helfen kann, wäre das sehr dankbar. VIELEN DANK!

BlackAdder
quelle

Antworten:

58

Du hast die Bedeutung von verpasst

Einige einflussreiche Umgebungsvariablen :

Sie legen sie also als Umgebungsvariable fest. configure ermittelt LDFLAGS und CPPFLAGS durch Überprüfen der Konfigurationsdateien und der Umgebung. Sie können sie so einstellen ...

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

oder als Einzeiler:

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

Bitte beachten Sie, dass Sie unter Umständen keine Unterverzeichnisse verwenden können /home/foo/sw/lib/

Wenn Sie beispielsweise Ihre Bibliothek einfügen, wird /home/foo/sw/lib/bar/möglicherweise ein lib not foundFehler angezeigt.

Sie können jedoch mehrere Einträge verwenden:

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

Rinzwind
quelle
4
Vielleicht CPPFLAGS = '- I / home / foo / sw / include: $ CPPFLAGS' nur für den Fall, dass etwas da draußen ist;)
Braiam
1
Hallo Rinzwind. Ich bin verwirrt über den Unterschied zwischen LDFLAGS=-Lund LIBS=-l. Der Hilfe zufolge scheinen sie dasselbe zu sein. Gibt es da einen Unterschied?
user15964
@ user15964 -Lverweist auf ein Verzeichnis, in dem nach Bibliotheken gesucht werden soll, während -lder Linker angewiesen wird , eine Verknüpfung zu einer bestimmten Bibliothek -L
herzustellen
Warum gibt es ein /Nachher, LDFLAGSaber kein Nachher CPPFLAGS? Ist das ein Tippfehler oder ist es wichtig?
7.
nicht perse, beide arbeiten und nein. Das / am Ende gibt an, dass es sich um ein Verzeichnis handelt, aber nicht unbedingt erforderlich ist.
Rinzwind