Jak dodać ścieżkę bibliotek do komendy ./configure?

51

Chciałbym ./configureutworzyć link do biblioteki, a niektóre zawierają pliki. Moja biblioteka jest przechowywana w, /home/foo/sw/lib/a moje pliki są przechowywane w /home/foo/sw/include.

./configure --help wyrzuca następujące:

Niektóre wpływowe zmienne środowiskowe:

  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

Próbowałem różnych kombinacji:

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

Ale wydaje mi się, że nie mam poprawnej składni. Byłbym bardzo wdzięczny, gdyby ktoś mógł mi pomóc. DZIĘKI!

Czarna Żmija
źródło

Odpowiedzi:

58

Brakowało Ci znaczenia

Niektóre wpływowe zmienne środowiskowe :

Więc ustawiasz je jako zmienną środowiskową; config określa LDFLAGS i CPPFLAGS, sprawdzając pliki konfiguracyjne i środowisko. Możesz ustawić je w ten sposób ...

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

lub jako jedna linijka:

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

Pamiętaj, że możliwe jest, że nie możesz używać podkatalogów /home/foo/sw/lib/

na przykład włożenie biblioteki /home/foo/sw/lib/bar/może spowodować lib not foundbłąd.

Możesz jednak użyć wielu wpisów:

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

Rinzwind
źródło
4
Może CPPFLAGS = '- I / home / foo / sw / include: $ CPPFLAGS' na wypadek, gdyby coś tam było;)
Braiam
1
Cześć, Rinzwind. Jestem zdezorientowany co do różnicy między LDFLAGS=-Li LIBS=-l. Według pomocy wydają się być tym samym. Czy jest jakaś różnica?
user15964
@ user15964 -Lodnosi się do katalogu do wyszukiwania bibliotek, a jednocześnie -linformuje linkera o połączeniu z określoną biblioteką (aby znaleźć, który przeszuka dostarczone -Lkatalogi obok domyślnego zestawu.
sherrellbc
Dlaczego istnieje /po, LDFLAGSale nie po CPPFLAGS? Czy to literówka, czy to ważne?
vy32
nie perse, zarówno praca, jak i nie. Na końcu „/” oznacza, że ​​jest to katalog, ale nie jest również potrzebny.
Rinzwind