Steady Blog

[Emscripten/WASM] EMCC Compile 실행 시, C/Cpp Header가 없어도 컴파일 되는 이유 본문

임시 자료/Emscripten&WASM

[Emscripten/WASM] EMCC Compile 실행 시, C/Cpp Header가 없어도 컴파일 되는 이유

우유먹고쑥 2021. 2. 20. 11:26

Emscripten 공부를 시작과 함께 emcc를 이용하여 간단한 cpp 파일을 wasm로 컴파일을 진행하였다.

Html 문서를 통해 wasm 파일이 정상적으로 실행됨을 확인하였는데, 여기서 궁금증이 생겼다.

 

c/cpp에서 import되는 파일들의 link를 걸지 않았는데, 왜 정상적으로 빌드, 컴파일이 되는걸까?

이에 대해 Emscripten 공식 문서에서는 다음과 같이 설명하고 있다.

URL : https://emscripten.org/docs/getting_started/Tutorial.html

정리하면 다음과 같다.

Emscripten 시뮬레이터가 자동으로 normal libc stdio API들을 접근하고 컴파일 하게 해주는 것이며,

JS는 보통 웹브라우저의 sandBox 환경에서 fileSystem에 직접적인 접근 없이 구동을 한다는 것이다.

 

음.. 여기서 sandBox 환경이 무엇인지 궁금증이 생겼다.

더보기

Sandbox 의미?

 - 보안을 위한 환경으로, 실행한 프로그램이 접근할 수 있는 자원들을 제한하는 대신, 제한되지 않은 자원들에 대해서만은 자유롭게 접근하고 조작할 수 있도록 허락한 환경을 의미

  - 즉, 샌드박스는 실행한 프로그램이 자원에 마음대로 접근하여 시스템에 영향을 미치는 심각한 오작동을 일으키거나 시스템을 공격하는 일을 미연에 방지가 가능함

 

샌드박스 환경에서 자바스크립트

 - 웹브라우저가 웹 페이지를 로딩하는 중에 자바스크립트를 만나면 사용자의 확인없이 바로 스크립트를 실행하기 때문에 자바스크립트는 샌드박스 환경에서 실행됨

  

  - 가장 대표적인 것이 파일 입출력인데, 자바스크립트 샌드박스 안에는 파일입출력에 대한 어떠한 기능도 포함되어 있지 않음(자바스크립트가 사용자가 모르는 중에 하드디스크에 접근하여 CURD (Create(생성), Read(읽기), Update(갱신), Delete(삭제))가 불가능하도록) 

  - 그러나, 웹브라우저가 제공하는 정보에 대해서는 자유롭게 접근할 수 있음

   => 웹브라우저가 제공하는 정보는 window 객체 아래에 위치한 여러 객체들에 나누어서 보관됨

      (해상도 정보는 window.screen 객체에, 모바일 기기에서 GPS로 측정된 현재 위치에 관한 정보는 window.location 객체에 보관(

    => 이렇게 window를 포함해 각종 정보들을 저장한 하위 객체들을 모아서 BOM(Browser Object Model)이라고 하며, 자바스크립트에서 BOM을 통해 필요 정보를 활용함

 

 

※ 참고 URL 

Sandbox

 1) dev.epiloum.net/21

 

자바스크립트 샌드박스(Sandbox)와 BOM(Browser Object Model) | Epiloum 개발노트

샌드박스의 의미 샌드박스는 아이들이 들어가 놀기 위해서 모래를 채워넣은 상자를 의미합니다. 모래상자 안에서 무엇을 하더라도 상관없지만, 모래상자 바깥으로 나와 집을 어지럽히지는 말

dev.epiloum.net

 2) brownbears.tistory.com/78

 

SandBox란?

샌드박스란 샌드박스는 외부로부터 받은 파일을 바로 실행하지 않고 보호된 영역에서 실행시켜 봄으로써 외부로부터 들어오는 파일과 프로그램이 내부 시스템에 악영향을 주는 것을 방지하는

brownbears.tistory.com