
かなり前に、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!
どれのするを生成しますa.out.js
が、ソースマップとして への最初の行参照のみが含まれています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をapt-purgeしました。3.4が正しいことを願っています。最小バージョンではなく、サポートされているバージョンは、最新のビルドが 3.9 だったと思うので、ドキュメントには特別な考慮を払うようには書かれていませんでした。とにかく、ソースから 3.4 をビルドしようとしましたが、どうやら 'js' を有効なターゲットとして認識しないようです (それなしでビルドしてとにかく実行してみましたが、ダメでした)。aptemscripten
パッケージが適切にコンパイルされた 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)
カーネル情報 ( から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 を実行しています。他の OS は存在せず、基本的にはバニラ インストールです。現在、apt リポジトリによって提供される clang、llvm、emscripten のデフォルト バージョンがあります。