WebAssembly를 사용하여 첫 번째 C & Cpp 프로그램 실행

안녕하세요 여러분, 다른 블로그에 오신 것을 환영합니다. 이전에 Wasm의 응용 프로그램에 대해 배웠지만 오늘은 Wasm을 사용하여 CLang 프로그램을 실행할 것입니다.

작은 소개:



# WebAssembly(약식 Wasm)은 스택 기반 가상 머신용 이진 명령 형식입니다. Wasm은 프로그래밍 언어를 위한 이식 가능한 컴파일 대상으로 설계되어 클라이언트 및 서버 응용 프로그램을 웹에 배포할 수 있습니다.



C/Cpp 및 Wasm 설정



리눅스의 환경을 생각하다

1. C/Cpp 컴파일러 설치


$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential
$ gcc -v
$ make -v

2. 와머 설치



Wasmer은 서버에서 WebAssembly를 실행하기 위한 오픈 소스 런타임입니다.
아직 설치하지 않았다면 Wasmer를 설치해 보겠습니다.

$ curl https://get.wasmer.io -sSfL | sh


Wasmer가 설치되면 pkg-config를 쉽게 얻을 수 있습니다.

$ wasmer config --pkg-config
prefix=/Users/USER/.wasmer
exec_prefix=/Users/USER/.wasmer/bin
includedir=/Users/USER/.wasmer/include
libdir=/Users/syrus/.wasmer/lib

Name: wasmer
Description: The Wasmer library for running WebAssembly
Version: 2.0.0
Cflags: -I/Users/USER/.wasmer/include/wasmer
Libs: -L/Users/syrus/.wasmer/lib -lwasmer


3. Wasienv 설치



Wasienv은 다양한 프로그래밍 언어를 Wasm으로 컴파일하여 브라우저 또는 웹 서버에서 실행하는 데 사용됩니다.

curl https://raw.githubusercontent.com/wasienv/wasienv/master/install.sh | sh
wasmtime ReBinary.wasm 



C/Cpp 파일을 WebAssembly WASI로 컴파일하려는 경우:

# To compile to a WebAssembly WASI file
# This command will generate:
#  • An executable: ./example
#  • A WebAssembly file: ./example.wasm
wasicc examples/example.c -o example

# If you are using configure
wasiconfigure ./configure

# If you are using cmake (or make)
wasimake cmake .


C/Cpp 파일을 일반 WebAssembly로 컴파일하려는 경우:

# To compile to a WebAssembly file
# This command will generate:
#  • An executable: ./example
#  • A WebAssembly file: ./example.wasm
wasmcc examples/example.c -o example


SDK 설치(wasienv install-sdk):wasienv install-sdk 7
SDK를 기본값으로 설정하려면(wasienv default-sdk):wasienv default-sdk 7

4. 와즘타임



Wasmtime은 WebAssembly 및 WASI를 위한 작고 효율적인 런타임입니다.

$ curl https://wasmtime.dev/install.sh -sSf | bash
$ wasienv install-sdk unstable



첫 번째 프로그램 실행


ReverseANo.c 또는 ReverseANo.cpp라는 파일을 만들고 프로그램을 작성합니다.

// Reverse a No.

#include<stdio.h>  
 int main()    
{    
int n, reverse=0, rem;    
printf("Enter a number: \n");    
  scanf("%d", &n);    
  while(n!=0)    
  {    
     rem=n%10;    
     reverse=reverse*10+rem;    
     n/=10;    
  }    
  printf("Reversed Number: %d \n",reverse);    
return 0;  
}  


컴파일 및 실행

이제 .wasm 파일에서 .c/.cpp 바이너리 파일을 생성하기 위해 Wasienv 를 사용합니다.

.c의 경우

wasicc ReverseANo.c -o ReBinary.wasm


.cpp의 경우

wasicc ReverseANo.cpp -o ReBinary.wasm


경고를 무시하십시오.

ReBinary.wasm 파일이 생성됩니다.

이제 이 파일을 실행하기 위해 wasmtime 를 사용할 것입니다.

wasmtime ReBinary.wasm 


C로 작성된 Reverse a Number 예제에서 작업하여 첫 번째 프로그램을 실행할 수 있습니다.

C++ 프로그램의 경우 확장자를 .cpp로 변경하기만 하면 됩니다.





블로그와 관련된 아이디어와 제안을 댓글로 남기고 유용하다고 생각되면 공유해 주세요.
의견 섹션에 질문을 작성하면 오류를 해결하는 데 도움이 됩니다.

좋은 웹페이지 즐겨찾기