g ++에 라이브러리 경로를 어떻게 포함합니까?


96

내 makefile에 추가 라이브러리에 대한 경로를 포함하려고하는데 컴파일러가 해당 경로를 사용하도록하는 방법을 알 수 없습니다. 지금까지 :

g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test

경로를 포함하고 싶습니다.

/data[...]/lib

testing.cpp에는 해당 라이브러리의 파일이 포함되어 있기 때문입니다. 또한 나는 리눅스 머신을 사용하고 있습니다.

편집 : 라이브러리 경로가 아닙니다. 포함 된 파일에만. 내 잘못이야.


답변:


168

(이진) 라이브러리를 검색 할 디렉토리를 지정하려면 다음을 사용하십시오 -L.

-L/data[...]/lib

실제 라이브러리 이름을 지정하려면 다음을 사용합니다 -l.

-lfoo  # (links libfoo.a or libfoo.so)

포함 파일 (라이브러리와는 다름) 을 검색 할 디렉토리를 지정하려면 다음을 사용하십시오 -I.

-I/data[...]/lib

그래서 나는 당신이 원하는 것은

g++ -g -Wall -I/data[...]/lib testing.cpp fileparameters.cpp main.cpp -o test

4
기본적으로 필요하기 전에 어딘가에; 는 -I예를 들어, .CPP 파일 이름 앞에 와야한다.
Ernest Friedman-Hill

1
시스템 변수에 라이브러리를 추가하는 것과 같이 컴파일러가 그 그림을 그릴 수 있습니까?
프레드

5
@Fred, 그래, g + +를 이해하고 환경 변수의 전체 무리 (가) 등 경로, 라이브러리 경로 포함 제어하는 데 사용할 수 있습니다
어니스트 프리드먼 - 힐

1
-L과 -I의 차이점은 무엇입니까 (자본 I, 낮은 L이 아님)?
Youda008 2015

1
@ Youda008 Capital ell : 도서관 검색 경로. 대문자 : 포함 파일의 검색 경로. Small ell : 연결할 라이브러리의 이름입니다.
Ernest Friedman-Hill

1

MakeFile 또는 CMakeLists.txt에서 CMAKE_CXX_FLAGS를 아래와 같이 설정할 수 있습니다.

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.