Как добавить путь к библиотекам в команду ./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/

Например, если вы поместите вашу библиотеку, /home/foo/sw/lib/bar/вы увидите lib not foundошибку.

Однако вы можете использовать несколько записей:

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

Rinzwind
источник
4
Может быть, CPPFLAGS = '- I / home / foo / sw / include: $ CPPFLAGS' на всякий случай, если что-то там есть;)
Брайам
1
Привет, Ринзвинд. Я смущен разницей между LDFLAGS=-Lи LIBS=-l. Согласно справке, они, кажется, одно и то же. Есть ли разница?
user15964
@ user15964 -Lотносится к каталогу для поиска библиотек, в то время -lкак компоновщик сообщает, что он должен ссылаться на определенную библиотеку (чтобы найти, в которой он будет искать предоставленные -Lкаталоги наряду с набором по умолчанию.
sherrellbc
Почему есть /после, LDFLAGSно не после CPPFLAGS? Это опечатка или это важно?
vy32
не perse, как работа, так и нет. / В конце означает, что это каталог, но он не нужен, также включайте.
Rinzwind