티스토리 뷰

카테고리 없음

Emscripten

wch2000 2018. 11. 28. 13:49

1. 소개

  - Emscripten은 LLVM을 사용하여 C/C++을 javaScript로 컴파일해준다.

  - Emscripten은 웹에서 바로 사용할수있는 원시코드를 만든다. (원시언어이므로 platform에 상관없이 사용가능)


2. Building Projects

- Emscripten은 기존 gcc를 대신해 emcc를 사용하여 build한다.


기존 build방식 

Emscripten build

./configure


make


make install

./emconfigure ./configure 


./emmake make 


./emcc [-Ox] project.bc -o project.js

* configure란?  

  - configure 스크립트는 개발 중인 프로그램을 각기 다른 수많은 컴퓨터들에서 실행할 수 있도록 도와주도록 설계된 실행 스크립트이다. 소스 코드로부터 컴파일하기 직전에 사용자 컴퓨터의 라이브러리의 존재 여부를 확인하고 연결시킨다.  

(configure 쉘을 이용해 현재프로세스에 적합한 makefile 구성 -> make명령으로 makefile실행 -> make install명령으로 실행파일 최종설치)

    * make 관련 참고자료: https://wiki.kldp.org/KoreanDoc/html/gcc_and_make/gcc_and_make-3.html



- Clang을 사용하여 C/C++파일을 LLVM bitcode로 변환후 자바스크립트로 컴파일

* 해당 결과물중 .js의 경우는 Node.js에서도 사용이 가능.


- 스탠다드 라이브러리의 경우 링크 옵션 필요없이 자동으로 링킹.

- 서드파티 라이브러리의 경우에는 프로젝트와 마찬가지로 비트코드로 빌드후 다시 자바스크립트로 재컴파일해야한다.


* 참고자료

asm.js 와 wasm의 차이 (http://hacks.mozilla.or.kr/2017/05/why-webassembly-is-faster-than-asm-js/) 



3. Building to WebAssembly

- WebAssembly는 Emscripten projects를 웹상에서 binary formatin으로 실행되도록 해준다.


3.1 Setup

- 이미 WebAssembly에 작성되어져 있다.

* emcc 옵션중 -s WASM=0 로 설정할경우 .wasm파일이 생성되지 않는다. (default: WASM=1)


3.2 compiler output

- emcc를 사용하여 빌드할경우 .wasm파일이 포함되어져 있다. 

      > hello.html 호출시  hello.js 내에서 hello.wasm 호출하는 방식.

      > 실제로 wasm파일이 syscalls 같은 시스템영역 컨트롤을 가능하게 작성된다.


4. Web server Setup

- 웹서버 MIME type에  application/wasm 을 추가할경우 사용가능

ex) 아파치의 경우 AddType application/wasm .wasm  





공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함