raylib:install:리눅스_환경에서_raylib_설치하기
리눅스 환경에서 raylib 설치하기
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
| raylib:install:리눅스_환경에서_raylib_설치하기 [2025/12/14 21:28] – 만듦 이거니맨 | raylib:install:리눅스_환경에서_raylib_설치하기 [2025/12/28 19:24] (현재) – 이거니맨 | ||
|---|---|---|---|
| 줄 18: | 줄 18: | ||
| sudo apt install build-essential git | sudo apt install build-essential git | ||
| sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev | sudo apt install libasound2-dev mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Raylib 설치하기 ===== | ||
| + | |||
| + | ==== 1. Raylib | ||
| + | |||
| + | Git 리포지토리에서 일단 Raylib를 복하자. 최상단 폴더에서 raylib를 설치하겠다. | ||
| + | |||
| + | <code bash> | ||
| + | cd ~ | ||
| + | git clone https:// | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 2. Raylib 컴파일 하기 ==== | ||
| + | |||
| + | 이에 raylib폴더 중에 src 폴더에 들어가서 src폴더 내에 있는 makefile을 실행시키자. | ||
| + | |||
| + | <code bash> | ||
| + | cd raylib/src/ | ||
| + | make PLATFORM=PLATFORM_DESKTOP | ||
| + | sudo make install | ||
| + | </ | ||
| + | |||
| + | |||
| + | 참고로 src폴더 내에 있는 makefile을 보면, 다음의 경로가 있다. | ||
| + | |||
| + | <code make> | ||
| + | # RAYLIB_INSTALL_PATH should be the desired full path to libraylib. No relative paths. | ||
| + | DESTDIR ?= /usr/local | ||
| + | RAYLIB_INSTALL_PATH ?= $(DESTDIR)/ | ||
| + | # RAYLIB_H_INSTALL_PATH locates the installed raylib header and associated source files. | ||
| + | RAYLIB_H_INSTALL_PATH ?= $(DESTDIR)/ | ||
| + | </ | ||
| + | |||
| + | 즉, 컴파일한 라이브러리는 / | ||
| + | |||
| + | |||
| + | ===== Makefile 만들기 ===== | ||
| + | |||
| + | ==== 1. 프로젝트 폴더 ==== | ||
| + | |||
| + | 아무거나 Raylib를 사용한 간단한 c혹은 c++ 프로그램을 만들자 | ||
| + | |||
| + | / | ||
| + | |||
| + | |||
| + | 그런데 cpp를 이용할 것이므로 이 보다는 OOP 형태로 만들어진 예제를 이용하자. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | 내가 전에 작성한 글인 | ||
| + | [[..: | ||
| + | |||
| + | |||
| + | ==== 2. 상수 설정하기 ==== | ||
| + | |||
| + | makefile에서 사용할 상수(constant)를 설정하자. 주로 경로에 대해서 설정하면 된다. | ||
| + | |||
| + | |||
| + | <code make> | ||
| + | # Define required raylib variables | ||
| + | PROJECT_NAME | ||
| + | RAYLIB_VERSION | ||
| + | RAYLIB_PATH | ||
| + | |||
| + | # Define raylib source code path | ||
| + | RAYLIB_SRC_PATH | ||
| + | |||
| + | # Locations of raylib.h and libraylib.a/ | ||
| + | # NOTE: Those variables are only used for PLATFORM_OS: | ||
| + | DESTDIR | ||
| + | RAYLIB_INCLUDE_PATH | ||
| + | RAYLIB_LIB_PATH | ||
| + | |||
| + | # Library type compilation: | ||
| + | RAYLIB_LIBTYPE | ||
| + | |||
| + | # Build mode for project: DEBUG or RELEASE | ||
| + | BUILD_MODE | ||
| + | |||
| + | # Define raylib release directory for compiled library | ||
| + | RAYLIB_RELEASE_PATH | ||
| + | |||
| + | </ | ||
| + | |||
| + | git을 통해 복사한 Raylib 코드는 우리가 아까 'cd ~'을 통해 홈의 루트에 설치했다. | ||
| + | |||
| + | 따라서 탐색기에서 HOME에 가면 ' | ||
| + | |||
| + | 이 위치는 '/ | ||
| + | |||
| + | |||
| + | |||
| + | 그리고 아까 /raylib/src 폴더에서 make를 통해 컴파일한 라이브러리는 '/ | ||
| + | |||
| + | 이를 DESTDIR로 설정하면 된다. | ||
| + | |||
| + | |||
| + | ==== 3. 컴파일러와 메이크 파일 설정 ==== | ||
| + | |||
| + | 우리는 c가 아니라 c++을 사용할 것이므로 컴파일러는 g++을 이용할 것이다. | ||
| + | |||
| + | 따라서 gcc를 g++로 바꿔주자 | ||
| + | |||
| + | <code make> | ||
| + | # Define default C compiler: CC | ||
| + | # | ||
| + | CC = g++ | ||
| + | |||
| + | |||
| + | # Define default make program: MAKE | ||
| + | # | ||
| + | MAKE ?= make | ||
| + | </ | ||
| + | |||
| + | ==== 4. 컴파일러 플래그 옵션 설정 ==== | ||
| + | |||
| + | 플래그 옵션은 다음과 같이 설정하면 된다. | ||
| + | |||
| + | 참고로 윈도우에서는 아이콘을 만드는게 가능한데, | ||
| + | |||
| + | <code make> | ||
| + | # Define compiler flags: CFLAGS | ||
| + | # | ||
| + | # -O1 defines optimization level | ||
| + | # -g | ||
| + | # -s strip unnecessary data from build | ||
| + | # -Wall turns on most, but not all, compiler warnings | ||
| + | # -std=c99 | ||
| + | # -std=gnu99 | ||
| + | # -Wno-missing-braces | ||
| + | # -Wno-unused-value | ||
| + | # -D_DEFAULT_SOURCE | ||
| + | CFLAGS = -Wall -std=c++14 -Wno-missing-braces | ||
| + | |||
| + | ifeq ($(BUILD_MODE), | ||
| + | CFLAGS += -g -O0 | ||
| + | else | ||
| + | CFLAGS += -s -O1 | ||
| + | endif | ||
| + | |||
| + | # Additional flags for compiler (if desired) | ||
| + | #CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes | ||
| + | ifeq ($(PLATFORM), | ||
| + | ifeq ($(PLATFORM_OS), | ||
| + | # resource file contains windows executable icon and properties | ||
| + | # -Wl, | ||
| + | CFLAGS += $(RAYLIB_PATH)/ | ||
| + | endif | ||
| + | ifeq ($(PLATFORM_OS), | ||
| + | ifeq ($(RAYLIB_LIBTYPE), | ||
| + | CFLAGS += -D_DEFAULT_SOURCE | ||
| + | endif | ||
| + | ifeq ($(RAYLIB_LIBTYPE), | ||
| + | # Explicitly enable runtime link to libraylib.so | ||
| + | CFLAGS += -Wl, | ||
| + | endif | ||
| + | endif | ||
| + | endif | ||
| + | </ | ||
| + | |||
| + | ==== 5. 헤더파일과 라이브러리 파일 연결하기 ==== | ||
| + | |||
| + | 컴파일 옵션에 다음을 추가하여 헤더파일과 라이브러리 파일을 연결한다. | ||
| + | |||
| + | <code make> | ||
| + | # Define include paths for required headers: INCLUDE_PATHS | ||
| + | # NOTE: Some external/ | ||
| + | # | ||
| + | INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/ | ||
| + | |||
| + | # Define library paths containing required libs: LDFLAGS | ||
| + | # | ||
| + | LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/ | ||
| + | </ | ||
| + | |||
| + | 리눅스 데스크탑은 윈도우와 마찬가지로 GLFW (Open GL Library)를 이용한다. | ||
| + | |||
| + | 따라서 라이브러리 연결은 다음과 같은 플래그를 추가해야 한다. | ||
| + | |||
| + | <code make> | ||
| + | # Define libraries required on linking: LDLIBS | ||
| + | # NOTE: To link libraries (lib< | ||
| + | # | ||
| + | ifeq ($(TARGET_PLATFORM), | ||
| + | ifeq ($(PLATFORM_OS), | ||
| + | # Libraries for Windows desktop compilation | ||
| + | # NOTE: WinMM library required to set high-res timer resolution | ||
| + | LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm | ||
| + | endif | ||
| + | ifeq ($(PLATFORM_OS), | ||
| + | # Libraries for Debian GNU/Linux desktop compiling | ||
| + | # NOTE: Required packages: libegl1-mesa-dev | ||
| + | LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt | ||
| + | |||
| + | # On X11 requires also below libraries | ||
| + | LDLIBS += -lX11 | ||
| + | # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them | ||
| + | #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor | ||
| + | |||
| + | # Explicit link to libc | ||
| + | ifeq ($(RAYLIB_LIBTYPE), | ||
| + | LDLIBS += -lc | ||
| + | endif | ||
| + | # NOTE: On ARM 32bit arch, miniaudio requires atomics library | ||
| + | LDLIBS += -latomic | ||
| + | endif | ||
| + | endif | ||
| </ | </ | ||
| + | |||
| + | ==== 6. 컴파일 명령 ==== | ||
| + | |||
| + | 컴파일 명령은 다음과 같다. | ||
| + | |||
| + | |||
| + | <code make> | ||
| + | |||
| + | # Define a recursive wildcard function | ||
| + | rwildcard=$(foreach d, | ||
| + | |||
| + | # Define all source files required | ||
| + | SRC_DIR = src | ||
| + | OBJ_DIR = obj | ||
| + | |||
| + | # Define all object files from source files | ||
| + | SRC = $(call rwildcard, *.cpp, *.h) | ||
| + | #OBJS = $(SRC: | ||
| + | OBJS ?= main.cpp | ||
| + | |||
| + | |||
| + | |||
| + | # Default target entry | ||
| + | # NOTE: We call this Makefile target or Makefile.Android target | ||
| + | all: | ||
| + | $(MAKE) $(MAKEFILE_PARAMS) | ||
| + | |||
| + | # Project target defined by PROJECT_NAME | ||
| + | $(PROJECT_NAME): | ||
| + | $(CC) -o $(PROJECT_NAME)$(EXT) $(OBJS) $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) | ||
| + | |||
| + | # Compile source files | ||
| + | # NOTE: This pattern will compile every module defined on $(OBJS) | ||
| + | #%.o: %.c | ||
| + | $(OBJ_DIR)/ | ||
| + | $(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== 7. 소결 ==== | ||
| + | |||
| + | Makefile을 만들었으니 이제 컴파일을 할 수 있다. | ||
| + | |||
| + | 커맨드라인에서 ' | ||
| + | |||
| + | |||
| + | 리눅스 환경에만 국한하여 만든 makefile을 첨부한다. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Visual Studio Code 환경 설정하기 ===== | ||
| + | |||
| + | ==== 1. Task.json 설정하기 ==== | ||
| + | |||
| + | Code Editor 내에서 알아서 빌드할 수 있게 위에서 만든 Makefile을 호출하게 해보자 | ||
| + | |||
| + | |||
| + | === 가. 경로 변수 === | ||
| + | |||
| + | VS Code에서 현재 파일명을 받아오는 변수 ${fileBasenameNoExtension}이고 | ||
| + | |||
| + | 현재 워크스페이스의 폴더명을 받아오는 변수는 ${workspaceFolderBasename}이다. | ||
| + | |||
| + | 우리가 컴파일해서 만들 설치파일은 워크스페이스 폴더의 이름으로 만드는 것이 좋을 것이다((만약 현재 파일명으로 설치파일을 만든다면 거대부분의 설치 파일의 이름은 " | ||
| + | |||
| + | 따라서 ${workspaceFolderBasename}를 경로변수로 활용하자. | ||
| + | |||
| + | ==== 나. 공통 인자 ==== | ||
| + | |||
| + | Task.json에서 우리가 실행할 명령어는 " | ||
| + | |||
| + | <code make> | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ], | ||
| + | </ | ||
| + | |||
| + | ==== 다. 리눅스에 적용되는 인자 ==== | ||
| + | |||
| + | 리눅스 환경에서는 다음의 인자를 추가하면 된다. | ||
| + | |||
| + | <code make> | ||
| + | " | ||
| + | " | ||
| + | // " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ] | ||
| + | }, | ||
| + | </ | ||
| + | |||
| + | OBJS에 " | ||
| + | |||
| + | |||
| + | ==== 2. 나머지 ==== | ||
| + | |||
| + | 나머지는 지금까지 수정한 경로와 같은 방법으로 변경하면된다. | ||
| + | |||
| + | 내가 사용한 " | ||
| + | |||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | ===== 결론 ===== | ||
| + | |||
| + | 지금까지 만든 리눅스용 Raylib 템플릿 파일을 첨부한다. | ||
| + | |||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | ===== 더보기 ===== | ||
| + | |||
| + | ==== 1. VIM 에디터용 Syntax Highlight ==== | ||
| + | |||
| + | VIM 에디터용 Raylib를 위한 Syntax Highlight에 대하여는 [[vim_syntax_for_raylib_cpp|Raylib를 위한 VIM Syntax파일 만들기 ]]를 참조하라. | ||
| + | |||
| + | ==== 2. 실전 ==== | ||
| + | |||
| + | |||
| + | 이제 실제로 게임을 만들어보자 | ||
| + | |||
| + | [[raylib: | ||
| + | |||
| + | [[raylib: | ||
| + | |||
| + | 그런데 의외로 많은 사람들이 C 및 c++의 컴파일을 하는 방법을 모르는 사람들이 많다. | ||
| + | |||
| + | [[raylib: | ||
raylib/install/리눅스_환경에서_raylib_설치하기.1765715336.txt.gz · 마지막으로 수정됨: 저자 이거니맨
