====== 1.3 Emscripten SDK ====== Emscripten ist ein Compiler, der C/C++ zu WebAssembly (WASM) kompiliert. ---- ===== Was ist Emscripten? ===== **Emscripten** übersetzt: * C/C++ Code → WebAssembly * System-APIs → JavaScript-Equivalente * OpenGL → WebGL **Wofür brauchen wir Emscripten?** Für den WASM-Build von OpenSSL, der in Blazor WebAssembly läuft. ---- ===== Voraussetzungen ===== * ☑ [[.:wsl-einrichten|WSL2 installiert]] * ☑ Git verfügbar ---- ===== Installation in WSL ===== ==== Schritt 1: WSL öffnen ==== wsl ==== Schritt 2: Emscripten SDK klonen ==== # In das opt-Verzeichnis (systemweit) cd /opt # Als root klonen sudo git clone https://github.com/emscripten-core/emsdk.git sudo chown -R $USER:$USER /opt/emsdk Oder im Home-Verzeichnis (nur für Ihren Benutzer): git clone https://github.com/emscripten-core/emsdk.git ~/emsdk cd ~/emsdk ==== Schritt 3: Neueste Version installieren ==== cd /opt/emsdk # oder ~/emsdk # Neueste stabile Version installieren ./emsdk install latest # Aktivieren ./emsdk activate latest ==== Schritt 4: Environment-Variablen setzen ==== **Temporär (nur diese Session):** source /opt/emsdk/emsdk_env.sh **Permanent (in .bashrc):** echo 'source /opt/emsdk/emsdk_env.sh' >> ~/.bashrc ---- ===== Prüfung ===== # Emscripten Compiler emcc --version Erwartete Ausgabe: emcc (Emscripten gcc/clang-like replacement) 3.1.xx # Weitere Tools emar --version emranlib --version ---- ===== Schnelltest ===== Erstellen Sie eine Test-Datei: cat > hello.c << 'EOF' #include int main() { printf("Hello from WebAssembly!\n"); return 0; } EOF Kompilieren zu WASM: emcc hello.c -o hello.js # Ausführen mit Node.js node hello.js # Ausgabe: Hello from WebAssembly! ---- ===== Für den OpenSSL Build ===== Beim WASM-Build von OpenSSL werden diese Emscripten-Tools verwendet: | Tool | Verwendung | |------|------------| | ''emcc'' | C-Compiler (ersetzt gcc) | | ''emar'' | Archiver (ersetzt ar) | | ''emranlib'' | Ranlib (ersetzt ranlib) | | ''emconfigure'' | Wrapper für ./Configure | | ''emmake'' | Wrapper für make | **Beispiel:** # Statt: ./Configure linux-x86_64 make # Mit Emscripten: emconfigure ./Configure linux-generic32 emmake make ---- ===== Version aktualisieren ===== cd /opt/emsdk # oder ~/emsdk # Updates holen git pull # Neueste Version installieren ./emsdk install latest ./emsdk activate latest # Environment neu laden source ./emsdk_env.sh ---- ===== Häufige Probleme ===== ==== "emcc: command not found" ==== Environment nicht geladen: source /opt/emsdk/emsdk_env.sh ==== "Python not found" ==== Emscripten braucht Python 3: # Ubuntu sudo apt install python3 # Fedora sudo dnf install python3 ==== Alte Version aktiviert ==== # Aktive Version prüfen emcc --version # Falls veraltet, neu aktivieren cd /opt/emsdk ./emsdk activate latest source ./emsdk_env.sh ---- ===== Weiter zu ===== * [[.:build:wasm-blazor|WASM/Blazor Build]] * [[.:vorbereitung:start|Zurück zur Vorbereitung]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//