Linux๋?
Linus Torvalds๊ฐ ์ ์ํ ์์ ์คํ์์ค ์ํํธ์จ์ด OS/์ปค๋๋ก, ํฐ๋ฏธ๋ ํ๊ฒฝ์์ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ค์ํ ๋์์ ์ํํ ์ ์๋ค.
- ์ปค๋(Kernel): ํ๋์จ์ด์ ์์์ ๊ด๋ฆฌํด ์ฃผ๋ ์ํํธ์จ์ด (CPU, SSD, RAM ๋ฑ ์์์ ์คํ๋ ์ํํธ์จ์ด์ ํ ๋นํด ์ฃผ๊ณ ์ค์ผ์ค๋ง)
- OS: ์ปค๋ ์์ ์ฌ๋ฌ ๊ฐ์ง ๋ ์ด์ด๋ฅผ ์ฌ๋ ค ์ฌ์ฉ์๊ฐ ํ์ํ ๊ธฐ๋ฅ๋ค์ ๊ตฌํํ ๊ฒ
- ํฐ๋ฏธ๋(Terminal): Graphic User Interface์์ Command line์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํด ์ฃผ๋ ์ฅ์น (Windows์ cmd์ ์ ์ฌํ ๊ธฐ๋ฅ์ ํจ) Tab์ ๋๋ฌ ์๋์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
user@hostname:~$
- user: ์ฌ์ฉ์ ์ด๋ฆ
- hostname: ์ปดํจํฐ ์ด๋ฆ
- ~: ํ์ฌ ๊ฒฝ๋ก
- $: ํ๋กฌํํธ ๊ธฐํธ. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ์ปค๋งจ๋๊ฐ ํ๋กฌํํธ ๊ธฐํธ ๋ค์ ๋ํ๋จ($๋ ์ผ๋ฐ ์ฌ์ฉ์, #๋ ๊ด๋ฆฌ์ ๊ถํ)
Linux File System
Windows์๋ ๋ค๋ฅด๊ฒ C: D: E: ๋ฑ์ ๋๋ผ์ด๋ธ๊ฐ ์ต์์๊ฐ ์๋ Root (/)๊ฐ ์ต์์ ๋ฃจํธ์ด๋ฉฐ, ๊ธฐ์กด์ Windows์์ ์ฌ์ฉํ๋ ๋๋ผ์ด๋ธ๋ค์ /mnt/๋๋ /media/์ mount๋์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. (mount๋, ์ปดํจํฐ์์ ํ๋์จ์ด ์ฅ์น๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ์ ์๋๋ก ์ํํธ์จ์ด์ ์ผ๋ก ์ฐ๊ฒฐํ๋ ๊ฒ)
- / : Root (Linux file system์์ ์ต์์ root)
- ~ : Home (๊ณ์ ๋ณ home directory), = /home/{๊ณ์ ์ด๋ฆ}
Windows์์ D๋๋ผ์ด๋ธ์ D:/abc/gg.txt ํ์ผ์ด ์์๋ค๊ณ ํ๋ฉด, Linux ์์๋ ๋์ผ ํ์ผ์ /media/{device-name}/abc/gg.txt ์์ ์ฐพ์ ์ ์๋ค. unmount ๋์ด์์ ๊ฒฝ์ฐ, ์ฅ์น์ ์ฝ๊ธฐ ์ฐ๊ธฐ๊ฐ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ธ์ฅ device๋ค์ ์์ ํ๊ฒ ์ ๊ฑฐ ๊ฐ๋ฅํ๋ค.
- ์๋์ฐ์ ์ฅ์น๊ด๋ฆฌ์์๋ ๋ค๋ฅด๊ฒ IO ์ฅ์น๋ค์ด /dev/ ํด๋์ ํ์ผ์ฒ๋ผ ์กด์ฌํ๋ค. (ttyUSB0, ttyACM0, ttyS2, ...)
- ์จ๊น ํ์ผ ๋ฐ ํด๋: .์ผ๋ก ์์ํ๋ ํด๋ ๋ฐ ํ์ผ์ ์จ๊น ์ฒ๋ฆฌ “Ctrl + h”๋ก ์จ๊ฒจ์ง ํ์ผ/ํด๋๋ ์ผ๊ณ ๋ ์ ์๋ค.
- ํ๊ฒฝ ๋ณ์ ์ค์ ์ ์ํ ํฐ๋ฏธ๋ ์์ ์คํฌ๋ฆฝํธ: ~/.bashrc (.bashrc ํ์ผ์ ๊ณ์ ์ ์ข ์๋์ด ๋ค๋ฅธ ๊ณ์ ์์๋ ๋ค๋ฅธ ํ๊ฒฝ์ด ์ ์ฉ๋จ)
Linux Permission
๋ฆฌ๋ ์ค์์ ๊ถํ์ drwxrwxrwx 10์๋ฆฌ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, ์ฝ๊ธฐ/์ฐ๊ธฐ/์คํ ๊ถํ์ ๋ํ๋ธ๋ค. chmod ๋ช ๋ น์ผ๋ก ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ -๋ ๊ถํ์ด ์์์ ๋ํ๋ธ๋ค.
- d: directory ์ฌ๋ถ
- ์ฒซ ๋ฒ์งธ rwx : ํ์ผ์ ์์ ์
- ๋ ๋ฒ์งธ rwx : ํ์ผ์ ๊ทธ๋ฃน
- ์ธ ๋ฒ์งธ rwx : ์ธ๋ถ์ธ
CMake
CMake๋ ๋ฉํฐํ๋ซํผ(ํฌ๋ก์ค ์ปดํ์ผ)์ผ๋ก ์ฌ์ฉ ํ ์ ์๋ Make์ ๋์ฉํ์ ๋ง๋ค๊ธฐ ์ํ ์คํ ์์ค ํ๋ก์ ํธ๋ก, ์ด์์ฒด์ ์ ์ข ์์ ์ด์ง ์๊ณ , ๋์ ์ด์์ฒด์ ์ ๋ง๋ Make ํ์ผ์ ์์ฑ์ ๋๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ฐ ์์๋ Visual Studio ์๋ฃจ์ ํ์ผ์ ์์ฑํ๊ณ , ๋ฆฌ๋ ์ค์์๋ make ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ Makefile์ ๋ง๋ ๋ค.
- make: Makefile์ ๋ช ์๋ ๋๋ก compile ๋ฑ์ ์ํํด ์ฃผ๋ ๋ช ๋ น์ด
gccํน์ g++๋ก ์ปดํ์ผ ํ ๊ฒฝ์ฐ ํฌํจ ๋๋ ํฐ๋ฆฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋งํฌ ๋ฑ์ ๊ธธ๊ฒ ๋ช ์ํด ์ฃผ์ด์ผ ํ๋๋ฐ, Makefile์ ๊ทธ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ง๊ณ ์์ด make๋ก compile์ด ๊ฐ๋ฅํ๋ค.
* CMakeLists.txt ๋ช ๋ น์ด
project(Tutorial) # ํ๋ก์ ํธ ์ ์
Add_definitions(-DFOO=1234)# ์ ์ฒ๋ฆฌ๊ธฐ ์ ์(define)
Add_definitions(-DXXX_ENABLE)
include_directories(/usr/local/include) # ํฌํจ ๋๋ ํ ๋ฆฌ
file(GLOB sources “src/*.h” “src/*.cpp”) # ํ์ผ ํ์ ํ, sources์ ๋ชฉ๋ก ์ ๋ณด ์ค์
add_executable(Hello ${sources}) # ์คํ ํ์ผ ์ ์(mainํจ์๊ฐ ํฌํจ๋ ์ฝ๋)
target_link_libraries(Hello alibrary) # ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋งํฌ
set(variable value) # variable ๋ณ์๋ฅผ value๋ก ์ค์
PROJECT_SOURCE_DIR # ํ๋ก์ ํธ ์์ค ๋๋ ํ ๋ฆฌ
PROJECT_BINARY_DIR # ํ๋ก์ ํธ ๋ฐ์ด๋๋ฆฌ ๋๋ ํ ๋ฆฌ(๋ณดํต build ํด๋)
CMAKE_CURRENT_SOURCE_DIR # Subdirectory์ CMakeLists.txt๊ฐ ์๊ณ , add_subdirectory๋ก CMake ๊ฒฝ๋ก๊ฐ ์ถ๊ฐ๋์ด ์์ ๋, cmake ์ค์ธ subdirectory์ ๊ฒฝ๋ก๋ฅผ ๋ํ๋
'๐ OS > Linux-๋ฆฌ๋ ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[E] qt.qpa.xcb: xcb_shm_attach() failed (0) | 2022.07.09 |
---|---|
[E] E: The list of sources could not be read. (0) | 2022.07.09 |
[Docker] Ubuntu 18.04 ๊ฐ์ ํ๊ฒฝ Docker ์ปจํ ์ด๋ ์์ฑ๊ณผ ์คํ (0) | 2022.07.07 |
[E] QXcbConnection: Could not connect to display unix:10.0 (0) | 2022.07.07 |
[Linux] ๋ฆฌ๋ ์ค ๊ธฐ๋ณธ ๋ช ๋ น์ด ๋ชจ์ (0) | 2022.05.24 |