6

私はそれを Javascript に移植し、最終的オンライン版。

私はなんとかプロセスを開始することができました

emconfigure ./configure make

これにより、LLVM ビットコード .o ファイルの生成が正常に開始されますが、main-gcu.c で「main-gcu.c:43:11: 致命的なエラー: 'ncurses.h' ファイルが見つかりません」というメッセージが表示されてハングアップします。

ncurses を参照するファイルは main-gcu.c だけだと思いますが、コンパイル中にライブラリを含める方法がわかりません。「make」で ncurses を含めるように指定する方法はありますか、それとも「emcc main-gcu.c -c -lncurses」で main-gcu.c ファイルを個別にコンパイルする必要がありますか? 私はそれを試みましたが、emccが2レベル下の実際に含まれている他のヘッダーファイルを見つけることができないという別のエラーにつながりました(main-gcu.cに含まれるヘッダーに含まれるヘッダーが見つかりませんでした-とにかくそれを修正するには? )。

また、Mac OSX に ncurses ライブラリをインストールする必要があるかどうかもわかりません。私が実際に見つけることができるのは、Linux 用の libncurses5-dev への参照だけです。

ありがとう!

4

1 に答える 1

5

Emscriptenによるコンパイルを誤解していると思います。私はあなたが直面しているいくつかの問題を指摘しようとします.

  1. 一般的なルールは、 Emscripten のすべてのツールのみがLLVMフォーマット(例えばBITCODE ) をJavaScriptに変換できるということです。emconfigureemmake、ビルド環境を変更して、ソースコードがLLVM...形式のいずれかにコンパイルされるようにします (ルールには例外がありますが、気にしないでください)。したがって、最終結果にリンクしたいものはすべて、LLVM 形式でなければなりません (デフォルトではncursesではありません)。

  2. 出力はJavaScriptであるため、異なるスレッドでプログラム コードを実行する機会はありません。多くの C/C++ コードは UI にスレッドを使用し、その他の処理にはスレッドを使用しますが、そのようなモデルはEmscriptenでは機能しません。したがって、ソフトウェアをコンパイル/実行するには、スレッドを使用する部分を書き直す必要があります。ポインターについては、 を参照してください。emscripten_set_main_loop

  3. ライブラリをコンパイルしたとしても、それらをEmscriptenに静的にリンクする必要があります。この時点では、技術的な問題ではなく、ライセンスの問題です。たとえば、ライブラリが静的リンクのためにLGPLの下でライセンスされている場合、 GPL条件が有効になるためです。

すべての明快さが最終的に消えたことを願っています;)

于 2012-06-17T23:25:58.200 に答える