[Linux] ๋ฆฌ๋ˆ…์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

2022. 7. 4. 15:12ยท๐ŸŒŒ OS/Linux-๋ฆฌ๋ˆ…์Šค
728x90
728x90

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์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๊ฐ„๋‹จํ•œ CMake ๊ตฌ์กฐ๋Š” ๋‹จ์ผ ํ”„๋กœ์ ํŠธ์‹œ ์‚ฌ์šฉ๋œ๋‹ค. Project ํด๋” ์•ˆ์˜ CMakeLists.txt๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค๋ช…ํ•˜๋ฉฐ build ํด๋”๋ฅผ ์ƒ์„ฑํ•˜์—ฌ build ํด๋” ์•ˆ์—์„œ buildํ•˜๋Š” ํ˜•์‹์ด๋‹ค.
๋‹ค์ค‘ CMake ๊ตฌ์กฐ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋‹ค์ค‘ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ๋ณดํ†ต ํ•œ ๋ฒˆ์— buildํ•œ ํŒŒ์ผ๋“ค์„ ๋ชจ์•„ ๋†“๋Š” ํด๋”๊ฐ€ ์™ธ๋ถ€์— ์กด์žฌํ•œ๋‹ค.

 

 

* 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์˜ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋ƒ„
728x90
320x100
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐ŸŒŒ 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
'๐ŸŒŒ OS/Linux-๋ฆฌ๋ˆ…์Šค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [E] E: The list of sources could not be read.
  • [Docker] Ubuntu 18.04 ๊ฐ€์ƒ ํ™˜๊ฒฝ Docker ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ๊ณผ ์‹คํ–‰
  • [E] QXcbConnection: Could not connect to display unix:10.0
  • [Linux] ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ณธ ๋ช…๋ น์–ด ๋ชจ์Œ
mxnxeonx
mxnxeonx
"์•„, ์ด๊ฑฐ ๋ญ์˜€๋”๋ผ"๋ฅผ ํ•˜์ง€ ์•Š๊ธฐ์œ„ํ•œ ์ผ๊ธฐ์žฅ.
  • mxnxeonx
    MJ's Development Diary
    mxnxeonx
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (154)
      • ๐Ÿ’ป Language (43)
        • Java : ์ž๋ฐ” (18)
        • Python : ํŒŒ์ด์ฌ (9)
        • ROS : ๋กœ๋ด‡์‹œ์Šคํ…œ (9)
        • Android : ์•ˆ๋“œ๋กœ์ด๋“œ (4)
        • JavaScript : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ (2)
      • ๐ŸŒ Environment (19)
        • IDE : ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ (9)
        • Virtual : ๊ฐ€์ƒํ™˜๊ฒฝ (10)
      • โš™ Framework (12)
        • Vue-๋ทฐ (3)
        • Spring-์Šคํ”„๋ง (7)
      • ๐Ÿ’พ DataBase (18)
      • ๐ŸŒŒ OS (36)
        • Linux-๋ฆฌ๋ˆ…์Šค (36)
      • ๐Ÿ’ฌ CI · CD (7)
        • Git : ๊นƒ (7)
      • ๐Ÿ“ƒ ETC (3)
      • ๐Ÿค– AI (4)
  • ๋งํฌ

    • GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
mxnxeonx
[Linux] ๋ฆฌ๋ˆ…์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”