คอมไพล์ C/C++ เป็น WASM ด้วย Emscripten
ตั้งค่าสภาพแวดล้อมและคอมไพล์โปรแกรม C/C++ แรกของคุณเป็นโมดูล WebAssembly โดยใช้ชุดเครื่องมือ Emscripten
คอมไพล์ C/C++ เป็น WASM ด้วย Emscripten เป็นบทเรียน WebAssembly (WASM) for High Performance Apps ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน WebAssembly (WASM) for High Performance Apps และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส WebAssembly (WASM) for High Performance Apps มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
Meet Emscripten!
Welcome! Today, we'll learn to compile C/C++ code into WebAssembly (WASM). The key tool for this is Emscripten.
Emscripten is a complete toolchain that takes C/C++ code and compiles it into WASM, along with "glue" JavaScript code to help run it in a web browser or Node.js environment.
Bridging C/C++ to WASM
Why Emscripten? Browsers don't understand C/C++ directly. Emscripten acts as a powerful translator.
- It compiles your C/C++ into the efficient WASM binary format.
- It generates JavaScript "glue" code to load the WASM module and interact with it from JavaScript.
- It handles C/C++ standard library functions (like
printf) by providing JavaScript equivalents.
Setting Up Emscripten
Setting up Emscripten involves downloading the Emscripten SDK (emsdk). This SDK contains everything you need: the emcc compiler, Node.js, Python, and other utilities.
Typically, you'd run commands like:
git clone https://github.com/emscripten-core/emsdk.gitcd emsdk./emsdk install latest./emsdk activate latest
This prepares your environment to use emcc.
A Simple C Function
Let's start with a very simple C program. This program defines a function add and calls it from main. We'll compile this into WASM.
#include <stdio.h>
// A simple C function to add two numbers
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 7);
printf("Result of add(5, 7): %d\n", result);
return 0;
}The `emcc` Command
The heart of Emscripten is the emcc compiler. It's a drop-in replacement for gcc or clang that knows how to target WebAssembly.
You'll use emcc just like you would a standard C/C++ compiler, but with specific flags to control the WASM output.
Compiling Our C Code
Now, let's compile our add.c file. We'll tell emcc to output a JavaScript file that includes the compiled WASM module.
The command -o add.js tells Emscripten to create add.js (the glue code) and add.wasm (the binary module).
emcc add.c -o add.js -s EXPORTED_FUNCTIONS="['_add']" -s EXPORT_ES6=1The Generated Files
After running the emcc command, you'll find two main files:
add.wasm: This is the actual WebAssembly binary module. It contains the compiledaddfunction in a highly optimized, compact format.add.js: This is the JavaScript "glue" code. It's responsible for loadingadd.wasm, setting up the WASM environment, and providing an interface to call functions exported from the WASM module.
What the Glue Does
The generated JavaScript glue code (e.g., add.js) is crucial. It handles:
- Fetching and instantiating the
.wasmfile. - Setting up the WASM module's memory.
- Converting JavaScript types to WASM types and vice-versa.
- Providing an object (often named
Module) to interact with the WASM module's exported functions.
This allows you to seamlessly call your C functions from JavaScript.
Optimizing Your WASM
Emscripten allows you to optimize your WASM output for size and speed. This is crucial for web performance.
You can use optimization flags similar to gcc:
-O0: No optimizations (fastest compile time).-O1,-O2: Standard optimizations.-O3: Aggressive optimizations (slower compile, smaller/faster code).-Os: Optimize for size.-Oz: Optimize aggressively for smallest size.
For production, emcc -O3 or emcc -Oz are common choices.
Quick Check: Emscripten
You've learned about Emscripten and its role. Let's test your understanding!
Recap: Compiling C/C++
In this lesson, you've taken your first step into WebAssembly with C/C++!
- We introduced Emscripten as the toolchain for compiling C/C++ to WASM.
- You saw how
emcccompiles C code into.wasmand.jsglue files. - We discussed the purpose of both the WASM binary and the JavaScript glue code.
- You learned about basic optimization flags for
emcc.
Next, we'll dive into how to load and run these WASM modules in a web browser using JavaScript!
เรียนรู้ WebAssembly (WASM) for High Performance Apps ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 48
คำถามที่พบบ่อย
บทเรียน “คอมไพล์ C/C++ เป็น WASM ด้วย Emscripten” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คอมไพล์ C/C++ เป็น WASM ด้วย Emscripten” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส WebAssembly (WASM) for High Performance Apps ให้อัปเกรดเป็น CoddyKit PRO คอร์ส WebAssembly (WASM) for High Performance Apps มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คอมไพล์ C/C++ เป็น WASM ด้วย Emscripten”
ตั้งค่าสภาพแวดล้อมและคอมไพล์โปรแกรม C/C++ แรกของคุณเป็นโมดูล WebAssembly โดยใช้ชุดเครื่องมือ Emscripten คุณปฏิบัติ WebAssembly (WASM) for High Performance Apps ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน WebAssembly (WASM) for High Performance Apps หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน WebAssembly (WASM) for High Performance Apps บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คอมไพล์ C/C++ เป็น WASM ด้วย Emscripten” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน WebAssembly (WASM) for High Performance Apps นี้ได้ไหม
ได้ บทเรียน WebAssembly (WASM) for High Performance Apps ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คอมไพล์ C/C++ เป็น WASM ด้วย Emscripten
- การโหลดและเรียกใช้ WASM ใน JavaScript
- การแลกเปลี่ยนข้อมูลพื้นฐาน ชนิดข้อมูลดั้งเดิม
- เรียกใช้ฟังก์ชัน JavaScript จาก C/C++