Programing

GLFW 3를 빌드 및 설치하고 Linux 프로젝트에서 사용하는 방법

lottogame 2020. 9. 24. 08:08
반응형

GLFW 3를 빌드 및 설치하고 Linux 프로젝트에서 사용하는 방법


GLFW3

어젯밤 나는 소스에서 Linux 용 GLFW 3 패키지를 빌드하려고 늦게까지 작업하고있었습니다. 이 과정은 제가 CMake에 대해 잘 모르기 때문에 부분적으로는 GLFW에 익숙하지 않았기 때문에 총 3 시간 정도로 매우 오랜 시간이 걸렸습니다.

이 게시물이 어제 겪었던 어려움에서 당신을 구할 수 있기를 바랍니다! 나는 짧은 글을 써야한다고 생각했고, 당신의 삶의 몇 시간을 구할 수 있기를 바랍니다.

#glfw IRC 채널의 "urraka", "b6"및 "niklas"덕분에 glfw 버전 3.0.1이 작동하게되었습니다.

glfw3, 특히 CMake로 설정하는 것에 대한 웹 문서가 많지 않기 때문에 이것은 사소한 프로세스가 아닙니다 (확실히 저에게는 아닙니다, 저는 전문가가 아닙니다).

나는 이것을 질문과 대답 섹션으로 나누라는 요청을 받았기 때문에 그렇게 했으므로 대답 부분은 이제 아래에 있습니다.

GLFW의 관리자입니까, 아니면 GLFW 팀의 구성원입니까?

GLFW3의 관리자가 이것을 본다면, 그들에게 보내는 메시지는 "Windows, Mac OS X 및 Linux에서 GLFW3 설정"섹션을 웹 사이트에 추가하는 것입니다! GLFW로 프로그램을 작성하는 것은 매우 쉽습니다. 온라인 문서가 매우 훌륭하고 사용 가능한 모든 클래스와 모듈을 빠르게 스캔하면 바로 사용할 수 있습니다. 여기소개 된 테스트 프로젝트의 예도 매우 좋습니다. 내가 발견 한 두 가지 주요 문제는 먼저 시스템에 GLFW3를 설정하는 방법과 두 번째로 GLFW3 프로젝트를 빌드하는 방법이었습니다. 이 두 가지는 아마도 비전문가에게는 충분히 명확하지 않을 것입니다.

편집하다

오늘 간단히 살펴보면 (날짜 : 2014-01-14) GLFW 웹 사이트가 제가 마지막으로 본 이후로 큰 변화를 겪은 것처럼 보였으며 이제 GLFW를 사용하여 GLFW를 컴파일하고 프로그램을 구축하는 섹션이 새로 생겼습니다.


1 단계 : CMAKE로 시스템에 GLFW 3 설치

이번 설치에서는 KUbuntu 13.04, 64bit를 사용했습니다.

첫 번째 단계는이 링크를 사용하여 www.glfw.org에서 최신 버전 (향후 버전이 비슷한 방식으로 작동한다고 가정)을 다운로드하는 것입니다 .

다음 단계는 아카이브를 추출하고 터미널을 여는 것입니다. cdglfw-3.XX 디렉토리에 넣고 실행 cmake -G "Unix Makefiles"하면 높은 권한이 필요할 수 있으며 먼저 빌드 종속성설치 해야 할 수도 있습니다 . 이 작업을 수행하려면 시도 sudo apt-get build-dep glfw 하거나 sudo apt-get build-dep glfw3 또는 수동으로 할 내가 사용했던 것처럼 sudo apt-get install cmake xorg-dev libglu1-mesa-dev... 분명히 내가 이미 있었다 ... 등의 pthread 라이브러리와 같은 당신이 필요로하는 다른 libs가있을 수 있습니다. (아래의 g ++ 링커 단계에 제공된 -l 옵션을 참조하십시오.)

이제를 입력 make한 다음을 입력 할 수 있습니다 . make install이 경우 sudo먼저 입력 해야합니다 .

좋습니다. 마지막 3 개의 CMake 단계에서 빌드 된 내용이나 배치 된 위치를 알려주는 자세한 출력을 얻을 수 있습니다. ( /usr/include예 :)

2 단계 : 테스트 프로그램 생성 및 컴파일

다음 단계는 vim ( "what ?! vim ?!") 또는 선호하는 IDE / 텍스트 편집기를 실행하는 것입니다. 저는 vim을 사용하지 않았고 Kate를 사용했습니다. KUbuntu 13.04를 사용하고 있기 때문입니다. 어쨌든 여기 (페이지 하단)에서 테스트 프로그램을 다운로드하거나 복사 하고 저장하고 종료합니다.

이제 컴파일 g++ -std=c++11 -c main.cpp하십시오-C ++ 11이 필요한지 확실하지 않지만 nullptr그렇게 사용 했으므로 필요했습니다 ... gcc를 버전 4.7 또는 향후 버전 4.8로 업그레이드해야 할 수도 있습니다 . 여기 에 대한 정보 .

그런 다음 프로그램을 직접 입력했거나 "너무 영리하게"하려고했지만 작동하지 않는 경우 오류를 수정하십시오. 그런 다음이 괴물을 사용하여 연결하십시오! g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi따라서 "빌드 종속성 설치"부분에서 GL, GLU, X11 Xxf86vm (무엇이든) Xrandr posix-thread 및 Xi (무엇이든) 개발 라이브러리도 설치되어 있는지 확인할 수 있습니다. 그래픽 드라이버도 업데이트 할 수 있습니다. GLFW 3에는 OpenGL 버전 3 이상이 필요할 수 있습니다. 누군가가 그것을 확인할 수 있습니까? (@ user2255242에 -ldl -lXinerama -lXcursor대한 dlclose신용)에 대한 정의되지 않은 참조를받는 경우 올바르게 작동하도록 링커 옵션을 추가해야 할 수도 있습니다 .

그리고 네, 정말 많은 -ls 가 필요했습니다 !

3 단계 : 완료되었습니다. 좋은 하루 되세요!

이 정보가 정확하고 모든 것이 당신에게 도움이 되었기를 바랍니다. 그리고 당신은 GLFW 테스트 프로그램 작성을 즐겼습니다. 또한이 가이드가 어제 오늘 처럼 어려움을 겪고있는 미래의 몇몇 사람들에게 도움이 되었으면합니다 .

그건 그렇고, 모든 태그는 존재하지 않는 대답을 찾기 위해 stackoverflow에서 검색 한 것입니다. (지금까지.) 당신이 나와 비슷한 위치에 있다면 그것들이 당신이 찾던 것입니다.


옵션을 -l사용하여 glfw를 설치하면 s 가 많이 필요하지 않습니다 BUILD_SHARED_LIBS. ( ccmake먼저 실행하여이 옵션을 활성화 할 수 있습니다 .)

이렇게 sudo make install하면 공유 라이브러리가 /usr/local/lib/libglfw.so. 그런 다음 간단한 방법으로 예제 파일을 컴파일 할 수 있습니다.

g++ main.cpp -L /usr/local/lib/ -lglfw

그런 다음 프로그램을 실행하기 전에 공유 라이브러리의 검색 경로에 / usr / local / lib /를 추가하는 것을 잊지 마십시오. 다음을 사용하여 수행 할 수 있습니다.

export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}

그리고 항상 ~/.bashrc입력 할 필요가 없도록 입력 할 수 있습니다.


이런 식으로 해결했습니다

pkg-config 파일은 라이브러리를 사용하는 데 필요한 모든 필요한 컴파일 시간 및 링크 시간 플래그와 종속성을 설명합니다.

pkg-config --static --libs glfw3

나에게 그것을 보여줍니다

-L/usr/local/lib -lglfw3 -lrt -lXrandr -lXinerama -lXi -lXcursor -lGL -lm -ldl -lXrender -ldrm -lXdamage -lX11-xcb -lxcb-glx -lxcb-dri2 -lxcb-dri3 -lxcb-present -lxcb-sync -lxshmfence -lXxf86vm -lXfixes -lXext -lX11 -lpthread -lxcb -lXau -lXdmcp  

이 모든 라이브러리가 실제로 컴파일에 필요한지 모르겠지만 저에게는 작동합니다 ...


허용 된 답변은 더 많은 편집을 허용하지 않기 때문에 단일 복사-붙여 넣기 명령으로 요약하겠습니다 (3.2.1을 첫 번째 줄에서 사용 가능한 최신 버전으로 대체).

version="3.2.1" && \
wget "https://github.com/glfw/glfw/releases/download/${version}/glfw-${version}.zip" && \
unzip glfw-${version}.zip && \
cd glfw-${version} && \
sudo apt-get install cmake xorg-dev libglu1-mesa-dev && \
sudo cmake -G "Unix Makefiles" && \
sudo make && \
sudo make install

프로그램을 컴파일하려면 다음 명령을 사용하십시오.

g++ -std=c++11 -c main.cpp && \
g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXinerama -lXcursor

learnopengl.com 튜토리얼을 따르는 경우 GLAD도 설정해야 할 수 있습니다. 이 경우이 링크를 클릭하십시오

http://glad.dav1d.de/#profile=core&specification=gl&api=gl%3D3.3&api=gles1%3Dnone&api=gles2%3Dnone&api=glsc2%3Dnone&language=c&loader=on

and then click on the "Generate" button at the bottom right corner of the website and download the zip file. Extract it and compile the sources with the following command:

g++ glad/src/glad.c -c -Iglad/include

Now, the commands to compile your program become like this:

g++ -std=c++11 -c main.cpp -Iglad/include && \
g++ main.o glad.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXinerama -lXcursor

Great guide, thank you. Given most instructions here, it almost built for me but I did have one remaining error.

/usr/bin/ld: //usr/local/lib/libglfw3.a(glx_context.c.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

After searching for this error, I had to add -ldl to the command line.

g++ main.cpp -lglfw3 -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -lGL -lpthread -ldl

Then the "hello GLFW" sample app compiled and linked.

I am pretty new to linux so I am not completely certain what exactly this extra library does... other than fix my linking error. I do see that cmd line switch in the post above, however.


If anyone's getting lazy and maybe perhaps doesn't know how to configure shell for all those libraries and -ls, then I created a python script(you have to have python3, most linux users have it.) that allows you to easily compile scripts and run them without worrying much, it just has regular system calls, just arranged neatly, I created it for my self but maybe it'd be useful: Here it is

참고URL : https://stackoverflow.com/questions/17768008/how-to-build-install-glfw-3-and-use-it-in-a-linux-project

반응형