Emscriptenの組み込みのシンプルなHTTPサーバーを使用する

スポンサーリンク

Emscriptenの組み込みのシンプルなHTTPサーバーを使用してみます。

この記事は、前回公開した「EmscriptenでC言語のプログラムをHTMLとJavaScriptに変換する」という記事の続きとなります。

■環境

Windows10

>emcc –version

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.15 (8b4443a87f5eab5dbb9adb690f9ebed0a9da4bd9)

■簡単なC言語のプログラムを作成しコンパイル

「hello.c」という簡単なC言語のプログラムのファイルを作成し、コンパイルを行います。

コンパイルが成功すると、「hello.c」というファイルを保存した先にhtml,js,wasmファイルの3つが生成されます。今回は「test_html」というフォルダを作成し、その中にコンパイルしています。

■Webブラウザで生成されたファイルにアクセスする

生成後、Webブラウザで生成されたファイルにアクセスしますが、この時にEmscriptenの組み込みのシンプルなHTTPサーバーを使用します。

test_html> emrun --no_browser --port 8080 hello.html

使用するために、Windows10のコマンドプロンプトを起動し、cdコマンドで「test_html」フォルダ内に移動し、上記のコマンドを入力し、Enterキーを押します。

Web server root directory: C:\Users\user_\test_html
Now listening at http://0.0.0.0:8080/

入力すると、上記のメッセージが出力されます。出力後、Webブラウザ(今回はGoogle chrome)を起動し、アドレスバーに「http://0.0.0.0:8080/」を入力し、アクセスします。

アクセスすると、「このサイトにアクセスできません http://0.0.0.0:8080/ のウェブページは一時的に停止しているか、新しいウェブアドレスに移動した可能性があります。ERR_ADDRESS_INVALID」と表示される場合があります。このような場合は、そもそも「0.0.0.0」を宛先に使うのは誤りであり、「http://127.0.0.1:8080/」か、「http://localhost:8080/」に変更し、アクセスします。

アクセスすると、作成したC言語のプログラムが、JavaScriptに変換され、C言語のプログラム内の処理である「文字列の出力」が行われたことを確認できました。

これでも確認できるのですが、コマンドプロンプト上を確認すると、上記のようなメッセージが出力され、JavaScriptに変換されたC言語のプログラムの処理が出力されません。

>emcc --emrun hello.c -s WASM=1 -o hello.html

これを上記のコマンドを用いてコードを再コンパイルしてみます。再コンパイル後、再度HTTPサーバーを起動させてWebページにアクセスしてみます。

アクセスすると、先程と同じようにWebページが表示されます。

表示されますが、コマンドプロンプト上を確認すると、JavaScriptに変換されたC言語のプログラムの処理が出力されていることが確認できました。このため、Emscriptenの組み込みのシンプルなHTTPサーバーを使用する場合は、再コンパイルして利用することを推奨します。

コメント

タイトルとURLをコピーしました