====== 1.3 Emscripten SDK ====== Emscripten je prevajalnik, ki prevaja C/C++ v WebAssembly (WASM). ---- ===== Kaj je Emscripten? ===== **Emscripten** prevaja: * C/C++ kodo → WebAssembly * Sistemske API-je → JavaScript ekvivalente * OpenGL → WebGL **Zakaj potrebujemo Emscripten?** Za WASM gradnjo OpenSSL, ki teče v Blazor WebAssembly. ---- ===== Predpogoji ===== * ☑ [[.:wsl-einrichten|WSL2 nameščen]] * ☑ Git na voljo ---- ===== Namestitev v WSL ===== ==== Korak 1: Odprite WSL ==== wsl ==== Korak 2: Kloniranje Emscripten SDK ==== # V imenik opt (sistemsko) cd /opt # Kloniranje kot root sudo git clone https://github.com/emscripten-core/emsdk.git sudo chown -R $USER:$USER /opt/emsdk Ali v domačem imeniku (samo za vašega uporabnika): git clone https://github.com/emscripten-core/emsdk.git ~/emsdk cd ~/emsdk ==== Korak 3: Namestitev najnovejše različice ==== cd /opt/emsdk # ali ~/emsdk # Namestitev najnovejše stabilne različice ./emsdk install latest # Aktivacija ./emsdk activate latest ==== Korak 4: Nastavitev okoljskih spremenljivk ==== **Začasno (samo ta seja):** source /opt/emsdk/emsdk_env.sh **Trajno (v .bashrc):** echo 'source /opt/emsdk/emsdk_env.sh' >> ~/.bashrc ---- ===== Preverjanje ===== # Emscripten prevajalnik emcc --version Pričakovani izpis: emcc (Emscripten gcc/clang-like replacement) 3.1.xx # Dodatna orodja emar --version emranlib --version ---- ===== Hitri test ===== Ustvarite testno datoteko: cat > hello.c << 'EOF' #include int main() { printf("Hello from WebAssembly!\n"); return 0; } EOF Prevajanje v WASM: emcc hello.c -o hello.js # Izvajanje z Node.js node hello.js # Izpis: Hello from WebAssembly! ---- ===== Za gradnjo OpenSSL ===== Pri WASM gradnji OpenSSL se uporabljajo ta Emscripten orodja: | Orodje | Uporaba | |--------|---------| | ''emcc'' | C prevajalnik (nadomešča gcc) | | ''emar'' | Arhivar (nadomešča ar) | | ''emranlib'' | Ranlib (nadomešča ranlib) | | ''emconfigure'' | Ovoj za ./Configure | | ''emmake'' | Ovoj za make | **Primer:** # Namesto: ./Configure linux-x86_64 make # Z Emscripten: emconfigure ./Configure linux-generic32 emmake make ---- ===== Posodobitev različice ===== cd /opt/emsdk # ali ~/emsdk # Pridobitev posodobitev git pull # Namestitev najnovejše različice ./emsdk install latest ./emsdk activate latest # Ponovno nalaganje okolja source ./emsdk_env.sh ---- ===== Pogoste težave ===== ==== "emcc: command not found" ==== Okolje ni naloženo: source /opt/emsdk/emsdk_env.sh ==== "Python not found" ==== Emscripten potrebuje Python 3: # Ubuntu sudo apt install python3 # Fedora sudo dnf install python3 ==== Aktivirana stara različica ==== # Preverjanje aktivne različice emcc --version # Če je zastarela, ponovno aktivirajte cd /opt/emsdk ./emsdk activate latest source ./emsdk_env.sh ---- ===== Naprej na ===== * [[wvds:sl:openssl:build:wasm-blazor|WASM/Blazor gradnja]] * [[wvds:sl:openssl:vorbereitung:start|Nazaj na pripravo]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//