사용자 도구

사이트 도구


raylib:install:리눅스_환경에서_raylib_설치하기
리눅스 환경에서 raylib 설치하기

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
raylib:install:리눅스_환경에서_raylib_설치하기 [2025/12/14 21:39] 이거니맨raylib:install:리눅스_환경에서_raylib_설치하기 [2025/12/28 19:24] (현재) 이거니맨
줄 45: 줄 45:
  
  
 +참고로 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)/lib
 +# RAYLIB_H_INSTALL_PATH locates the installed raylib header and associated source files.
 +RAYLIB_H_INSTALL_PATH ?= $(DESTDIR)/include
 +</code> 
 +
 +즉, 컴파일한 라이브러리는 /usr/local/lib에 들어 있음을 알 수 있다. 
 +
 +
 +===== Makefile 만들기 ===== 
 +
 +==== 1. 프로젝트 폴더 ====
 +
 +아무거나 Raylib를 사용한 간단한 c혹은 c++ 프로그램을 만들자 
 +
 +/raylib/example/core 폴더에 있는 core_basic_window.c를 써도 된다((example 폴더는 매우 예제가 좋으므로 꾸준히 보면 좋다)). 
 +
 +
 +그런데 cpp를 이용할 것이므로 이 보다는 OOP 형태로 만들어진 예제를 이용하자.
 +
 +{{ :raylib:raylibtemplate.zip |Raylib Template File}} 
 +
 +내가 전에 작성한 글인 
 +[[..:raylib_를_cpp로_vs_code_에서_사용하기|VS코드에서 Raylib CPP환경 설정하기]]를 참고하자 
 +
 +
 +==== 2. 상수 설정하기 ====
 +
 +makefile에서 사용할 상수(constant)를 설정하자. 주로 경로에 대해서 설정하면 된다. 
 +
 +
 +<code make> 
 +# Define required raylib variables
 +PROJECT_NAME          ?= raylib_hello
 +RAYLIB_VERSION        ?= 5.5.0
 +RAYLIB_PATH           ?= /home/(UserName)/raylib
 +
 +# Define raylib source code path
 +RAYLIB_SRC_PATH       ?= /home/(UserName)/raylib/src
 +
 +# Locations of raylib.h and libraylib.a/libraylib.so
 +# NOTE: Those variables are only used for PLATFORM_OS: LINUX, BSD
 +DESTDIR               ?= /usr/local
 +RAYLIB_INCLUDE_PATH   ?= $(DESTDIR)/include
 +RAYLIB_LIB_PATH       ?= $(DESTDIR)/lib
 +
 +# Library type compilation: STATIC (.a) or SHARED (.so/.dll)
 +RAYLIB_LIBTYPE        ?= STATIC
 +
 +# Build mode for project: DEBUG or RELEASE
 +BUILD_MODE            ?= RELEASE 
 +
 +# Define raylib release directory for compiled library
 +RAYLIB_RELEASE_PATH    ?= $(RAYLIB_PATH)/src 
 +
 +</code> 
 +
 +git을 통해 복사한 Raylib 코드는 우리가 아까 'cd ~'을 통해 홈의 루트에 설치했다.  
 +
 +따라서 탐색기에서 HOME에 가면 'raylib'폴더가 설치된 것을 알 수 있다. 
 +
 +이 위치는 '/home/(UserName)/raylib'이다. 여기서 (UserName)은 리눅스에서 사용자가 설정한 사용자 이름을 말한다. 
 +
 +
 +
 +그리고 아까 /raylib/src 폴더에서 make를 통해 컴파일한 라이브러리는 '/usr/local'에 설치되었다고 하였다. 
 +
 +이를 DESTDIR로 설정하면 된다. 
 +
 +
 +==== 3. 컴파일러와 메이크 파일 설정 ====
 +
 +우리는 c가 아니라 c++을 사용할 것이므로 컴파일러는 g++을 이용할 것이다.
 +
 +따라서 gcc를 g++로 바꿔주자 
 +
 +<code make>
 +# Define default C compiler: CC
 +#------------------------------------------------------------------------------------------------
 +CC = g++
 +
 +
 +# Define default make program: MAKE
 +#------------------------------------------------------------------------------------------------
 +MAKE ?= make
 +</code> 
 +
 +==== 4. 컴파일러 플래그 옵션 설정 ====
 +
 +플래그 옵션은 다음과 같이 설정하면 된다. 
 +
 +참고로 윈도우에서는 아이콘을 만드는게 가능한데, 리눅스에서는 어떻게 만드는지 아직 모르겠다.
 +
 +<code make>
 +# Define compiler flags: CFLAGS
 +#------------------------------------------------------------------------------------------------
 +#  -O1                  defines optimization level
 +#  -g                   include debug information on compilation
 +#  -s                   strip unnecessary data from build
 +#  -Wall                turns on most, but not all, compiler warnings
 +#  -std=c99             defines C language mode (standard C from 1999 revision)
 +#  -std=gnu99           defines C language mode (GNU C from 1999 revision)
 +#  -Wno-missing-braces  ignore invalid warning (GCC bug 53119)
 +#  -Wno-unused-value    ignore unused return values of some functions (i.e. fread())
 +#  -D_DEFAULT_SOURCE    use with -std=c99 on Linux and PLATFORM_WEB, required for timespec
 +CFLAGS = -Wall -std=c++14 -Wno-missing-braces 
 +
 +ifeq ($(BUILD_MODE),DEBUG)
 +    CFLAGS += -g  -O0
 +else
 +    CFLAGS += -s -O1
 +endif
 +
 +# Additional flags for compiler (if desired)
 +#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes
 +ifeq ($(PLATFORM),PLATFORM_DESKTOP)
 +    ifeq ($(PLATFORM_OS),WINDOWS)
 +        # resource file contains windows executable icon and properties
 +        # -Wl,--subsystem,windows hides the console window
 +        CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data
 +    endif
 +    ifeq ($(PLATFORM_OS),LINUX)
 +        ifeq ($(RAYLIB_LIBTYPE),STATIC)
 +            CFLAGS += -D_DEFAULT_SOURCE
 +        endif
 +        ifeq ($(RAYLIB_LIBTYPE),SHARED)
 +            # Explicitly enable runtime link to libraylib.so
 +            CFLAGS += -Wl,-rpath,$(EXAMPLE_RUNTIME_PATH)
 +        endif
 +    endif
 +endif
 +</code> 
 +
 +==== 5. 헤더파일과 라이브러리 파일 연결하기 ==== 
 +
 +컴파일 옵션에 다음을 추가하여 헤더파일과 라이브러리 파일을 연결한다.
 +
 +<code make>
 +# Define include paths for required headers: INCLUDE_PATHS
 +# NOTE: Some external/extras libraries could be required (stb, easings...)
 +#------------------------------------------------------------------------------------------------
 +INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external $(EXTRA_INCLUDE_PATHS)
 +
 +# Define library paths containing required libs: LDFLAGS
 +#------------------------------------------------------------------------------------------------
 +LDFLAGS = -L. -L$(RAYLIB_RELEASE_PATH) -L$(RAYLIB_PATH)/src
 +</code> 
 +
 +리눅스 데스크탑은 윈도우와 마찬가지로 GLFW (Open GL Library)를 이용한다. 
 +
 +따라서 라이브러리 연결은 다음과 같은 플래그를 추가해야 한다.
 +
 +<code make>
 +# Define libraries required on linking: LDLIBS
 +# NOTE: To link libraries (lib<name>.so or lib<name>.a), use -l<name>
 +#------------------------------------------------------------------------------------------------
 +ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW)
 +    ifeq ($(PLATFORM_OS),WINDOWS)
 +        # Libraries for Windows desktop compilation
 +        # NOTE: WinMM library required to set high-res timer resolution
 +        LDLIBS = -lraylib -lopengl32 -lgdi32 -lwinmm
 +    endif
 +    ifeq ($(PLATFORM_OS),LINUX)
 +        # 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),SHARED)
 +            LDLIBS += -lc
 +        endif
 +        # NOTE: On ARM 32bit arch, miniaudio requires atomics library
 +        LDLIBS += -latomic
 +    endif
 +endif
 +
 +</code>
 +
 +==== 6. 컴파일 명령 ====
 +
 +컴파일 명령은 다음과 같다.  
 +
 +
 +<code make>  
 +
 +# Define a recursive wildcard function
 +rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$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:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
 +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): $(OBJS)
 + $(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)/%.o: $(SRC_DIR)/%.c
 + $(CC) -c $< -o $@ $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM)
 +
 +</code>  
 +
 +==== 7. 소결 ====
 +
 +Makefile을 만들었으니 이제 컴파일을 할 수 있다.
 +
 +커맨드라인에서 'make'명령어를 치면 실행파일을 만들어 주는 것을 알 수 있다. 
 +
 +
 +리눅스 환경에만 국한하여 만든 makefile을 첨부한다.
 +
 +{{ :raylib:install:raylib_linux_makefile.zip |Raylib Linux Makefile}}
 +
 +
 +
 +
 +===== Visual Studio Code 환경 설정하기 =====  
 +
 +==== 1. Task.json 설정하기 ==== 
 +
 +Code Editor 내에서 알아서 빌드할 수 있게 위에서 만든 Makefile을 호출하게 해보자 
 +
 +
 +=== 가. 경로 변수 ===
 +
 +VS Code에서 현재 파일명을 받아오는 변수 ${fileBasenameNoExtension}이고 
 +
 +현재 워크스페이스의 폴더명을 받아오는 변수는 ${workspaceFolderBasename}이다.
 +
 +우리가 컴파일해서 만들 설치파일은 워크스페이스 폴더의 이름으로 만드는 것이 좋을 것이다((만약 현재 파일명으로 설치파일을 만든다면 거대부분의 설치 파일의 이름은 "main"이 되어 버린다.)). 
 +
 +따라서 ${workspaceFolderBasename}를 경로변수로 활용하자.  
 +
 +==== 나. 공통 인자 ==== 
 +
 +Task.json에서 우리가 실행할 명령어는 "make"이고 PLATFORM = "PLATFORM_DESKTOP"이다. 그리고 디버그 모드인 경우에는 "BUILD_MODE=DEBUG"를 추가하면 될 것이다.
 +
 +<code make>
 +            "command": "make",
 +            "args": [
 +                "PLATFORM=PLATFORM_DESKTOP",
 +                "BUILD_MODE=DEBUG"
 +            ],
 +</code> 
 +
 +==== 다. 리눅스에 적용되는 인자 ====
 +
 +리눅스 환경에서는 다음의 인자를 추가하면 된다. 
 +
 +<code make>
 +            "linux": {
 +                "args": [
 +                    // "PROJECT_NAME=${fileBasenameNoExtension}",
 +                    "PROJECT_NAME=${workspaceFolderBasename}.run",
 +                    "DESTDIR=/usr/local",
 +                    "RAYLIB_LIBTYPE=STATIC",
 +                    "OBJS=*.cpp",
 +                    "BUILD_MODE=DEBUG"
 +                ]
 +            },
 +</code> 
 +
 +OBJS에 "*.cpp"라고 하여 Makefile에서 컴파일 대상으로 된 OBJS를 모든 cpp파일로 설정해 준 것을 알 수 있다. 
 +
 +
 +==== 2. 나머지 ==== 
 +
 +나머지는 지금까지 수정한 경로와 같은 방법으로 변경하면된다. 
 +
 +내가 사용한 ".vscode"폴더내의 파일들을 첨부한다. 
 +
 +
 +{{ :raylib:install:vscode환경파일.zip |VS CODE 환경 파일}} 
 +
 +
 +===== 결론 =====
 +
 +지금까지 만든 리눅스용 Raylib 템플릿 파일을 첨부한다. 
 +
 +
 +{{ :raylib:install:raylibtemplate_linux.zip |Raylib Template - Linux, C++}} 
 +
 +
 +===== 더보기 ===== 
 +
 +==== 1. VIM 에디터용 Syntax Highlight ==== 
 +
 +VIM 에디터용 Raylib를 위한 Syntax Highlight에 대하여는 [[vim_syntax_for_raylib_cpp|Raylib를 위한 VIM Syntax파일 만들기 ]]를 참조하라.  
 +
 +==== 2. 실전 ==== 
 +
 +
 +이제 실제로 게임을 만들어보자 
 +
 +[[raylib:pong게임|Raylib로 Pong게임 만들기]]와 
 +
 +[[raylib:flappybird:flappy_bird_만들기|C++와 Raylib로 플래피버드 만들기]]를 읽어보자. 
 +
 +그런데 의외로 많은 사람들이 C 및 c++의 컴파일을 하는 방법을 모르는 사람들이 많다.
 +
 +[[raylib:install:컴파일_및_makefile|컴파일 및 Makefile]]은 꼭 일독할 것을 권한다. 
raylib/install/리눅스_환경에서_raylib_설치하기.1765715999.txt.gz · 마지막으로 수정됨: 저자 이거니맨