====== 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//