ずっと前にC++で非常に粗く原始的なシェルを作成していましたが、最近はasm.jsを見つけてブラウザでコンパイルして実行してみるといいと思いましたが、できません。 apt パッケージは互換性がありません。 llvm、clang、およびemscriptenパッケージをインストールしましたが、すべてリポジトリのものと同期します。これは私のテストファイルですhello.c
。
#include <stdio.h>
int main(){
printf("Hello World!\n");
return 0;
}
これはうまくコンパイルされ実行されますが、clang hello.c && ./a.out
実行するとemcc hello.c
エラーが発生します。
/usr/bin/lli: error creating EE: No available targets are compatible with this triple, see -version for the available targets. FAIL: Running the generated program failed!
どのするgeneratea.out.js
ですが、SourceMapへの最初の行参照のみが含まれていますa.out.js.map
(マップ自体には次の行だけが含まれています{"version":3,"file":"a.out.js","sources":[],"names":[],"mappings":""}
。これは、llvmがコンパイルされていない-targets=all
か、少なくともターゲットがないことを意味しているので、js
ビルドしてみました。最新のソフトウェアパッケージソースから取得次の手順に従ってください。ここそしてここ、両方のパッケージが正常に構築されました。しかし、これを実行すると、emiscriptは「3.4を期待していましたが」「(tags / RELEASE_380 / final)」バージョン情報を取得し、失敗すると文句を言います。安全のため、ソースビルドを開始する前に、emscripten、llvm、およびclangを適切に削除しました。 3.4最低限度で代わりにバージョンのみサポート最新バージョンは3.9で、ドキュメントには考慮すべき特別な考慮事項がないことが示されているためです。とにかく、ソースから3.4をビルドしようとしましたが、「js」を有効なターゲットとして認識していないようです(該当のターゲットなしでビルドして実行してみました:サイコロなし)。私の奇妙なことは、emscripten
apt-packageが正しくコンパイルされたclang / llvmを依存関係にインポートしないことです。それで、私が間違って呼ぶのではないでしょうか?ドキュメントには私がやっていることができるはずですが、私は最初にclang / emscriptenなので、最初にclang環境を設定するか、明示的に何かを接続する必要があるかもしれません。
システムメッセージ
clang/clang++のバージョンと情報(ソースclang --version
):
clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Target: i686-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
llvmのバージョンと情報(からlli --version
):
LLVM version 3.8.0
Optimized build.
Built Jul 9 2016 (11:22:59).
Default target: i686-pc-linux-gnu
Host CPU: broadwell
emscripten バージョン( からemcc --version
): 1.22.1
最近作成されたコンテンツ~/.emscripten_sanity
:1.22.1|le32-unknown-nacl|/usr/bin|(tags/RELEASE_380/final)
最近作成したものを貼り付けます。~/.emscsripten
カーネル情報(uname -srpmio
):Linux 4.4.0-21-generic i686 i686 i686 GNU/Linux
システムは拡張機能を備えたVirtualBox VMで、2つのCPUコア、4 GB RAM、512 MBビデオメモリ、〜50 GBの仮想ディスクイメージを備えた32ビットシステムでLinux Mint 18 "Sarah" Cinnamonを実行します。他のオペレーティングシステムはなく、デフォルトでは通常のインストールです。現在、aptリポジトリはclang、llvm、emscriptenのデフォルトバージョンを提供しています。