개발환경 구축
Wasm By Example-Hello World! 를 참고한 글이며 해당 방법 외에도
다른 컴파일 방법이 존재함을 사전에 밝힌다.
// github에서 emsdk 도구 가져오기
git clone https://github.com/emscripten-core/emsdk.git
// 생성된 emsdk 디렉터리로 이동
cd emsdk
Emscripten의 도구인 emsdk를 github에서 가져온다.
해당 명령어를 입력하면 현재 위치한 디렉터리를 기준으로 emsdk가 불러와진다.
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
cd ../
다음으로 emsdk를 사용해 Emscripten의 최신 빌드를 설치하고 활성화한다.
// hello.c
#include <stdio.h>
int main() {
printf("Hello! World!\n");
return 0;
}
이제 c파일을 생성해 준 다음 아래 명령어로 컴파일해 준다.
// hello.c를 hello.js로 변환하고 그에 맞게 wasm으로 컴파일
emcc hello.c -o hello.js
이제 .wasm 파일을 확인 가능하며 node 명령어로 실행 가능하다.
node hello
참고로 이때의 .wasm 파일을 열어보면 해석이 불가한 문자의 나열로 저장되어 있음을 확인 가능하다.
emcc hello.c -O3 -o hello.html
js 말고 html로도 변환하여 컴파일 가능하다.
이 html 파일이 제대로 동작하는지 아래 명령으로 확인 가능하다.
python3 -m http.server
이제 http://localhost:8000/hello.html로 접근하면 코드가 실행된 것을 확인 가능하다.
'Project' 카테고리의 다른 글
[Wasm] CVE-2018-6036(Underflow) 취약점 분석 및 재현 (0) | 2025.02.27 |
---|---|
[Wasm] CVE-2018-6092(Overflow) 취약점 분석 및 재현 (0) | 2025.02.27 |
[Wasm] 웹 어셈블리 c코드로 변환하기 (0) | 2025.02.27 |
[Wasm] 웹 어셈블리란? (0) | 2025.02.27 |
node.js 웹 서버 라우터 구성하기 (0) | 2025.02.27 |