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