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

1
안녕, 렌츠 윈드 나는 사이의 차이에 대한 혼란 스러워요 LDFLAGS=-LLIBS=-l. 도움에 따르면, 그들은 같은 것 같습니다. 차이점이 있습니까?
user15964

@ user15964 -L는 라이브러리를 검색하기위한 디렉토리를 참조하면서 -l링커에게 특정 라이브러리에 대해 링크하도록 지시 -L합니다 (기본 세트와 함께 제공된 디렉토리 를 검색 할 디렉토리 를 찾습니다)
sherrellbc

/이후가 LDFLAGS아닌 후에 CPPFLAGS있습니까? 오타입니까, 아니면 중요합니까?
vy32

박해하지 말고, 일도 아니고 끝에있는 /는 디렉토리임을 나타내지 만 너무 포함 할 필요는 없습니다.
Rinzwind
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.