2017-06-30 1 views
3

Emscriptenを正常にインストールし、Ubuntu 16.04仮想マシンで実行しています。私もhelloworld.cファイルをWebアセンブリに変換しました。現在、私はpythonをemscriptenでWebアセンブリに変換しようとしています。問題はemscriptenが現在Pythonをサポートしていないことです。そのため、回避策としてPythonコードをCythonでCに変換しようとしました。これは正常に実行されました。 cythonのcファイルをWebアセンブリに変換しようとするとエラーが発生します。 pyport.hによれば、このエラーが原因で、それは私は、この行をコメントアウトする試みた32なければならない場合、いくつかの32ビットシステムLONG_BITを64として誤って定義されて生成されるCコードをWebアセンブリに変換する際のエラー

$emcc pony_gp.c -o pony_gp.html 

In file included from pony_gp.c:11: 
In file included from /usr/include/python2.7/Python.h:58: 
/usr/include/python2.7/pyport.h:886:2: error: "LONG_BIT definition appears 
wrong for platform (bad gcc/glibc config?)." 
#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." 
ERROR:root:compiler frontend failed to generate LLVM bitcode, halting 

、しかし:ここでコンソール・ログでありますこれは、プログラムが静かに、Webアセンブリコードを生成せずに、最終的にはhtmlとjavascriptだけを実行することを可能にしました。

here私は「cmakeがpython dylibの1つのバージョンと別のバージョンのpythonをヘッダに取り込んでいる」ために問題があると読んでいます。これは、Python 2.7.13-1がpython-devパッケージと互換性がないため、最近Python 2.7.13-1からPython 2.7.11-1にダウングレードしたので意味があります。しかし、私はこれをどのように修正するのか分かりません。

誰が何をすべきか考えていますか?生成され、その後、

source ~/emsdk/emsdk_env.sh 
cython hello.py 
clang `python2-config --cflags` -S -emit-llvm hello.c 

+1

あなたはPythonコードとcythonに変換するためのステップを投稿するならば、それは参考になります。そうすれば、答えを得る機会が増えます。 –

答えて

1

フル答えていないが、あなたが打ち鳴らす、例えば、Emscriptenを提供好ましくは同じ打ち鳴らすを使用してLLVM(の.ll)に直接pony_gp.cをコンパイルすることができるはずです。 llファイルを直接Emscriptenに送ることができます。

完全に動作するPython - > WebAssemblyを作成するには、おそらくPythonランタイムとリンクする必要があります。すでにemctで配布されているものを使用して、LLVMバイトコード(.bc)、emsdk/emscripten/incoming/tests/python/python.bcにコンパイルします。

また、これは助けになることがあります。https://github.com/dgym/cpython-emscripten

関連する問題