如何将库路径添加到./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..

但是我似乎无法正确理解语法。如果有人可以帮助我,将不胜感激。谢谢!

Answers:


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


4
也许CPPFLAGS ='-I / home / foo / sw / include:$ CPPFLAGS',以防万一;)
Braiam 2014年

1
嗨,林兹温德 我感到困惑的区别LDFLAGS=-LLIBS=-l。根据帮助,它们似乎是同一回事。有什么区别吗?
user15964 '17

@ user15964 -L是指用于搜索库的目录,同时-l通知链接程序链接到特定库(以查找将-L与默认库一起搜索提供的目录的目录。)
sherrellbc

为什么会有一个/LDFLAGS但没有一个后CPPFLAGS?这是错字,还是重要?
vy32

不打扰,无论工作还是不行。末尾的/表示它是目录,但也不需要包含。
Rinzwind
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.