Як додати шлях до бібліотек до команди ./configure?


51

Я хотів би ./configureпокластись на бібліотеку, а деякі включають файли. Моя бібліотека зберігається в, /home/foo/sw/lib/а мої файли зберігаються в /home/foo/sw/include.

./configure --help викидає наступне:

Деякі впливові змінні середовища:

  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

Я спробував різні комбінації:

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

Але я, здається, не можу правильно зрозуміти синтаксис. Якщо хтось може мені допомогти, це буде дуже вдячно. ДЯКУЮ!

Відповіді:


58

Ви пропустили значення

Деякі впливові змінні середовища :

Отже, ви встановлюєте їх як змінну середовища; configure визначає LDFLAGS і CPPFLAGS, перевіряючи конфігураційні файли та середовище. Ви можете встановити їх так ...

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

або як однолінійний:

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

Зверніть увагу, що можливо, ви не можете використовувати підкаталоги під /home/foo/sw/lib/

fe введення вашої бібліотеки /home/foo/sw/lib/bar/може виявити lib not foundпомилку.

Однак ви можете використовувати кілька записів:

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


4
Можливо CPPFLAGS = '- I / home / foo / sw / include: $ CPPFLAGS' на випадок, якщо щось там є;)
Braiam

1
Привіт, Рінцвінд. Мене бентежить різниця між LDFLAGS=-Lі LIBS=-l. Згідно з довідкою, вони, здається, однакові. Чи є різниця?
user15964

@ user15964 -Lпосилається на каталог для пошуку бібліотек, в той час як -lповідомляє лінкер, щоб посилатися на певну бібліотеку (щоб знайти, який він буде шукати в наданих -Lкаталогах поряд із набором за замовчуванням.
sherrellbc

Чому існує /після, LDFLAGSа не після CPPFLAGS? Це помилка друку чи це важливо?
vy32

не персе, і робота, і ні. / В кінці означає, що це каталог, але його також не потрібно включати.
Rinzwind
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.