Emscriptenのコンパイル最適化
7326 ワード
コンパイルプロジェクトの原文のリンク:https://kripken.github.io/emscripten-site/docs/compiling/Building-Projects.html
一.Emscripten編集の最適化は二つのステップに分けられます.各ソースファイルをターゲットファイル(.bcファイル)にコンパイルし、LLVMによる最適化 ターゲットファイルをjsファイルにコンパイルする
./emcc-O 2 b.cpp-o b.bc//bitcodeにコンパイルする
・emcc-O 2 a.bc-o project.js/bitcodeをjsにコンパイルする
二つのステップの最適化レベルは同じに設定されています.
三.Js使用庫の二種類の方式:
ライブラリの収集とEmscriptenに移植します.Githubアドレス:https://github.com/emscripten-ports
五.ダイナミックライブラリリンク
Emscriptenの目標は最も速く、最小のコードを生成することです.この原因で、プロジェクト全体に対して単一のJavaScriptファイルを生成することに重点を置いています.このため、可能な時は動的リンクを避けなければならない.
デフォルトでは.soファイルと.bcファイルと.oファイルは同じです.つまり彼らはLLVM bitcodeを含みます.
最終構築段階(JavaScriptまたはHTMLを生成する)で指定されたダイナミックライブラリをスタティックライブラリとして連結します.
六.emccの主な使い方(教程:https://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html#tutorial)
一.Emscripten編集の最適化は二つのステップに分けられます.
.emscripten :
# Correct. The SAME LLVM and JavaScript options are provided at both levels.
./emcc-O 2 a.cpp-o.bc/bitcodeにコンパイルする./emcc-O 2 b.cpp-o b.bc//bitcodeにコンパイルする
・emcc-O 2 a.bc-o project.js/bitcodeをjsにコンパイルする
二つのステップの最適化レベルは同じに設定されています.
三.Js使用庫の二種類の方式:
1. bitcode js
emcc project.bc libstuff.bc -o final.js
2. bitcode , js
emcc project.bc libstuff.bc -o allproject.bc
emcc allproject.bc -o final.js
四.Emscripten Portsライブラリの収集とEmscriptenに移植します.Githubアドレス:https://github.com/emscripten-ports
emcc 。 ports ,emcc , , , 。
例えば、SDL 2はポーツであり、コマンド−sを要求して使用することができる. USE_SDL=2彼をリンクしますemcc tests/sdl2glshader.c -s USE_SDL=2 -s LEGACY_GL_EMULATION=1 -o sdl2.html
五.ダイナミックライブラリリンク
Emscriptenの目標は最も速く、最小のコードを生成することです.この原因で、プロジェクト全体に対して単一のJavaScriptファイルを生成することに重点を置いています.このため、可能な時は動的リンクを避けなければならない.
デフォルトでは.soファイルと.bcファイルと.oファイルは同じです.つまり彼らはLLVM bitcodeを含みます.
最終構築段階(JavaScriptまたはHTMLを生成する)で指定されたダイナミックライブラリをスタティックライブラリとして連結します.
六.emccの主な使い方(教程:https://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html#tutorial)
# Generate a.out.js from C++. Can also take .ll (LLVM assembly) or .bc (LLVM bitcode) as input
./emcc src.cpp
# Generate src.o containing LLVM bitcode.
./emcc src.cpp -c
# Generate result.js containing JavaScript.
./emcc src.cpp -o result.js
# Generate result.bc containing LLVM bitcode (the suffix matters).
./emcc src.cpp -o result.bc
# Generate a.out.js from two C++ sources.
./emcc src1.cpp src2.cpp
# Generate src1.o and src2.o, containing LLVM bitcode
./emcc src1.cpp src2.cpp -c
# Combine two LLVM bitcode files into a.out.js
./emcc src1.o src2.o
# Combine two LLVM bitcode files into another LLVM bitcode file
./emcc src1.o src2.o -o combined.o