sogen

(โ˜… 3,538)

๐Ÿช… Windows & Linux userspace emulator

  • .clang-format
  • .clang-format-ignore
  • .clang-tidy
  • .gitignore
  • .gitmodules
  • AGENTS.md
  • CLAUDE.md
  • CMakeLists.txt
  • CMakePresets.json
  • LICENSE
  • MANIFEST.in
  • pyproject.toml
  • README.md

# ์„ค์น˜ ๊ฐ€์ด๋“œ

1. ์ฝ”๋“œ ๋‚ด๋ ค๋ฐ›๊ธฐ
git clone https://github.com/momo5502/sogen

๊นƒํ—ˆ๋ธŒ์—์„œ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ์ „์ฒด๋ฅผ ๋‚ด ์ปดํ“จํ„ฐ๋กœ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค.

cd sogen

๋ฐฉ๊ธˆ ๋‚ด๋ ค๋ฐ›์€ ํ”„๋กœ์ ํŠธ ํด๋” ์•ˆ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

2. ๊ณต์‹ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ

์‰ฌ์›€ ์ถ”์ฒœ
์‚ฌ์ „ ์ค€๋น„๋ฌผ
  • Python 3 pip ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ ค๋ฉด Python์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
pip install sogen

PyPI์— ๋ฐฐํฌ๋œ ํŒจํ‚ค์ง€๋ฅผ ๋ฐ”๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ํด๋ก ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

โœ… ์„ค์น˜ ํ›„ ์ƒˆ ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ , ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒ„์ „ ํ™•์ธ ๋ช…๋ น(์˜ˆ: --version)์œผ๋กœ ์ •์ƒ ์„ค์น˜๋๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์ด ๋ ˆํฌ์˜ README์— ์ ํžŒ ์‹ค์ œ ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

3. CMake

๋ณดํ†ต
์‚ฌ์ „ ์ค€๋น„๋ฌผ
  • Git GitHub์—์„œ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์œผ๋ ค๋ฉด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • CMake ๋นŒ๋“œ ์„ค์ •์„ ์ƒ์„ฑํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • C/C++ ์ปดํŒŒ์ผ๋Ÿฌ Windows๋Š” Visual Studio(Community ๋ฌด๋ฃŒ), macOS๋Š” Xcode Command Line Tools, Linux๋Š” gcc/g++ ํŒจํ‚ค์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
cmake --preset=vs2022

์ด ๋ช…๋ น์–ด๋ฅผ ํ„ฐ๋ฏธ๋„์— ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•ด ์‹คํ–‰ํ•˜์„ธ์š”.

โœ… build ํด๋” ์•ˆ์— ์‹คํ–‰ ํŒŒ์ผ์ด ์ƒ์„ฑ๋๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ง์ ‘ ์‹คํ–‰ํ•ด๋ณด์„ธ์š” (์˜ˆ: ./build/์•ฑ์ด๋ฆ„).

์ด ๋ ˆํฌ์˜ README์— ์ ํžŒ ์‹ค์ œ ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

4. Node.js

์‰ฌ์›€
์‚ฌ์ „ ์ค€๋น„๋ฌผ
  • Git GitHub์—์„œ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์œผ๋ ค๋ฉด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • Node.js npm ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ ค๋ฉด Node.js๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. LTS(์žฅ๊ธฐ์ง€์›) ๋ฒ„์ „์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
cd page

์ด ํ”„๋กœ์ ํŠธ์˜ ๊ด€๋ จ ํŒŒ์ผ์ด ํ•˜์œ„ ํด๋” ์•ˆ์— ์žˆ์–ด์„œ, ๋จผ์ € ๊ทธ ํด๋”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

npm install

package.json์— ๋ช…์‹œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋‚ด๋ ค๋ฐ›์•„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

npm start

๊ฐœ๋ฐœ/์‹คํ–‰ ์„œ๋ฒ„๋ฅผ ์ผญ๋‹ˆ๋‹ค.

โœ… ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ํ„ฐ๋ฏธ๋„์— ๋‚˜ํƒ€๋‚˜๋Š” ์ฃผ์†Œ(๋ณดํ†ต http://localhost:3000 ํ˜•ํƒœ)๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด์–ด๋ณด์„ธ์š”.

5. Python

์‰ฌ์›€
์‚ฌ์ „ ์ค€๋น„๋ฌผ
  • Git GitHub์—์„œ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์œผ๋ ค๋ฉด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • Python 3 ์„ค์น˜ ์‹œ 'Add Python to PATH' ์˜ต์…˜์„ ๊ผญ ์ฒดํฌํ•˜์„ธ์š” (Windows).
pip install sogen

PyPI์— ๋ฐฐํฌ๋œ ํŒจํ‚ค์ง€๋ฅผ ๋ฐ”๋กœ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ํด๋ก ์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

โœ… ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์—†์ด ์‹คํ–‰๋˜๊ณ  ํ„ฐ๋ฏธ๋„์— ์•ˆ๋‚ด ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ ˆํฌ์˜ README์— ์ ํžŒ ์‹ค์ œ ๋ช…๋ น์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

6. Rust

๋ณดํ†ต
์‚ฌ์ „ ์ค€๋น„๋ฌผ
  • Git GitHub์—์„œ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์œผ๋ ค๋ฉด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • Rust (rustup) rustup์œผ๋กœ ์„ค์น˜ํ•˜๋ฉด cargo๋„ ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.
โš ๏ธ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ทœ๋ชจ๊ฐ€ ํฐ ์ €์žฅ์†Œ๋ผ, ์ด ๋ฐฉ๋ฒ•์ด ์‹ค์ œ ํ•ต์‹ฌ ์ œํ’ˆ์ด ์•„๋‹ˆ๋ผ ๋‚ด๋ถ€ ํ•˜์œ„ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. README ์ „์ฒด๋ฅผ ํ•จ๊ป˜ ํ™•์ธํ•ด๋ณด์„ธ์š”.
cd src/backends/icicle-emulator/icicle-bridge

์ด ํ”„๋กœ์ ํŠธ์˜ ๊ด€๋ จ ํŒŒ์ผ์ด ํ•˜์œ„ ํด๋” ์•ˆ์— ์žˆ์–ด์„œ, ๋จผ์ € ๊ทธ ํด๋”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

cargo build --release

Rust ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

cargo run

๋นŒ๋“œ ํ›„ ๋ฐ”๋กœ ์‹คํ–‰๊นŒ์ง€ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

โœ… cargo build๊ฐ€ ์—๋Ÿฌ ์—†์ด ๋๋‚˜๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค. target/ ํด๋”์— ์‹คํ–‰ ํŒŒ์ผ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
// repository documentation