2014-12-04 1 views
1

새로운 라이브러리를 사용할 때마다 특정 플래그 또는 플래그 집합이 있음을 발견했습니다. 실제로 라이브러리를 링크하기 위해 컴파일에 추가해야합니다.C++ 라이브러리 연결에 대한 플래그는 어디에 문서화되어 있습니까?

예를 들어 GL GLEW 및 GLUT의 경우 "-lglut -lGLU -lGL"을 사용합니다.

내가 필요로하는 이러한 플래그를 찾는 유일한 방법은 Google에서 끝없이 검색하는 것입니다. 어떤 라이브러리에 대해서도이 플래그를 찾을 수있는 '표준'위치가 있습니까? 머리글 등의 꼭대기에 추가됩니까? 내가 놓치고 있는게 분명해.

답변

3

GCC/G ++ 컴파일러에 대해 묻고 싶습니다.

플래그는 -l<libName>입니다. 여기에서 <libName>은 연결할 라이브러리의 이름입니다. 예를 들어 -lGL은 GL 라이브러리와 연결됩니다.

일부 라이브러리는 특정 순서로 여러 플래그를 필요로하는 이유는 단순히 서로 의존하는 방식 (라이브러리가 의존하는 라이브러리는 다른 라이브러리에 종속되는 방식 등)이기 때문입니다. 라이브러리의 문서는 대부분의 경우 문제를 해결해야합니다.

+0

예, Fedora 20의 GCC. 다른 컴파일러와 플랫폼이 C++와 어떻게 다른지 잊었습니다. 정말 무거운 java/opengl 배경에서 왔습니다. 팁 사람을 가져 주셔서 감사. –

+0

그리고 후속 조치를 취하십시오. 몇 번 시도한 후 cURL 라이브러리 플래그가 -lcurl이라는 것을 알았습니다. 나머지는이 쉬운 하하가되기를 바랍니다. 다시 한번 감사드립니다. –

+0

그들은 대개 다행히도. 천만에요. – Kelm

2

일반적으로 개발할 플랫폼에서 이러한 것들을 발견 할 수있는 직관을 개발합니다. 그것은 빤다.

예를 들어, 내 데비안 개발 시스템에서 필자는 원하는 라이브러리가 pkg-config인지 확인합니다.

pkg-config --list-all | less -i 

gl이라는 패키지가있는 것 같습니다.

pkg-config --libs gl 
pkg-config --cflags gl 

그런 다음 당신은 당신의 메이크에 그것을 넣을 수 있습니다 : 그래서, 당신은 pkg-config를 사용하여 링커 플래그를 얻을 수

gl_cflags := $(shell pkg-config --cflags gl) 
gl_libs := $(shell pkg-config --libs gl) 

override CFLAGS += $(gl_cflags) 
override LIBS += $(gl_libs) 

my_app: my_app.o 
     $(CC) $(LDFLAGS) -o [email protected] $^ (LIBS) 

이 만 설치 .pc 파일, 모든 라이브러리 작동하지 않습니다. 예를 들어 LibJPEG에서는 작동하지 않습니다. 이러한 경우 플래그 (-ljpeg)를 기억하거나 Autoconf/CMake/등 구성 스크립트를 사용하여 구성시 플래그를 발견 할 수 있습니다.

그리고 라이브러리의 개발 버전이 설치되어 있지 않은 경우 아무 것도 작동하지 않습니다.

sudo apt-get install libgl1-mesa-dev 

P. GLU는 약간 쓸모가 없습니다.

+0

나는 C++을 사용하고있다. 나는 Java OpenGL과 많은 experiance를 가지고 있으며 실제로이 문제에 익숙해지면 순전히 GL11 GL20 및 GL33 호출을 사용할 것입니다.또한 SDL은 C++에서 이러한 유형의 작업에 매우 유용하다고 들었습니다. –

관련 문제