ライブラリパスを./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/"


4
たぶんCPPFLAGS = '-I / home / foo / sw / include:$ CPPFLAGS'は何かがそこにある場合に備えて;)
Braiam 14年

1
こんにちは、Rinzwind。私はとの違いについて混乱していますLDFLAGS=-LLIBS=-l。助けによると、それらは同じもののようです。違いはありますか?
-user15964

@ user15964 -Lは、ライブラリを検索するディレクトリを指し-l、特定のライブラリにリンクするようリンカーに通知します(-Lデフォルトセットと一緒に指定されたディレクトリを検索するディレクトリを見つけます。)
sherrellbc

なぜ/LDFLAGSがあるのに後ではないのCPPFLAGSですか?それはタイプミスですか、それとも重要ですか?
vy32

それ自体ではなく、仕事でもありません。末尾の/は、ディレクトリであることを示しますが、含める必要はありません。
リンツウィンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.