Logo
  • Emscripten简介
    • 关于Emscripten
      • Emscripten工具链
      • 为Emscripten移植代码
    • Emscripten社区
      • Get in touch
      • Bug报告
      • Contribute
    • 开源许可证
    • 发布说明
    • 讲座及出版物
      • 简报
      • Papers
      • 图书
  • Emscripten快速入门
    • Emscripten下载和安装
      • Installation instructions using the emsdk (recommended)
        • Emsdk install targets
        • Platform-specific notes
      • Verifying the installation
      • Updating the SDK
      • Uninstalling the Emscripten SDK
      • Using the Docker image
      • Installation using unofficial packages
    • Emscripten教程
      • First things first
      • Verifying Emscripten
      • Running Emscripten
      • Generating HTML
      • Using files
      • Optimizing code
      • Emscripten Test Suite and Benchmarks
      • General tips and next steps
    • Emscripten测试套件
      • Setting up
      • 运行测试
      • 跳过测试
      • Exiting on first failure
      • Running a bunch of random tests
      • Important Tests
      • Benchmarking
      • Debugging test failures
    • Bug报告
      • LLVM, wasm-ld, clang, Binaryen bugs
      • Site and documentation bugs
    • 常见问题(FAQ)
      • How do I compile code?
      • Why do I get errors building basic code and the tests?
      • I tried something: why doesn’t it work?
      • Do I need to change my build system to use Emscripten?
      • Why is code compilation slow?
      • Why does my code run slowly?
      • Why is my compiled code big?
      • Why does compiling code that works on another machine gives me errors?
      • How can I reduce startup time?
      • How do I run a local webserver for testing / why does my program stall in “Downloading…” or “Preparing…”?
      • Why do I get machine type must be wasm32 or unknown file type during linking?
      • Why does my code fail to compile with an error message about inline assembly (or {"text":"asm"})?
      • Why does my HTML app hang?
      • How do I run an event loop?
      • Why doesn’t my SDL app work?
      • How do I link against system libraries like SDL, boost, etc.?
      • What are my options for audio playback?
      • How can my compiled program access files?
      • Why can’t my code access a file in the same directory?
      • How can I tell when the page is fully loaded and it is safe to call compiled functions?
      • What does “exiting the runtime” mean? Why don’t atexit()s run?
      • Why do functions in my C/C++ source code vanish when I compile to WebAssembly?
      • Why is the File System API is not available when I build with closure?
      • Why does my code break and gives odd errors when using -O2 --closure 1?
      • Why do I get TypeError: Module.someThing is not a function?
      • Why does Runtime no longer exist? Why do I get an error trying to access Runtime.someThing?
      • Why do I get a NameError or a problem occurred in evaluating content after a "-s" when I use a -s option?
      • How do I specify -s options in a CMake project?
      • Why do I get a Python SyntaxError: invalid syntax on file=.. or on a string starting with f'..'?
      • Why do I get a stack size error when optimizing: RangeError: Maximum call stack size exceeded or similar?
      • How do I pass int64_t and uint64_t values from js into Wasm functions?
      • Can I use multiple Emscripten-compiled programs on one Web page?
      • Can I build JavaScript that only runs on the Web?
      • Why the weird name for the project?
  • 编译和运行项目
    • 构建项目
      • Integrating with a build system
      • Emscripten linker output files
      • Building projects with optimizations
      • Building projects with debug information
      • Using libraries
      • Emscripten Ports
        • Contrib ports
        • Adding more ports
        • External ports
      • Build system issues
        • Build system self-execution
        • Faux Dynamic Linking
        • Configure may run checks that appear to fail
        • Archive (.a) files
      • Manually using emcc
      • Detecting Emscripten in Preprocessor
      • Using a compiler wrapper
      • pkg-config
      • Examples / test code
      • Troubleshooting
    • 编译为WebAssembly
      • Setup
        • Backends
      • Trapping
      • Compiler output
      • WebAssembly support in browsers
      • .wasm files and compilation
      • Web server setup
    • Dynamic Linking
      • Background
      • Overview of Dynamic Linking
      • Practical Details
        • Load-time Dynamic Linking
        • Runtime Dynamic Linking with dlopen()
      • Code Size
      • System Libraries
      • Miscellaneous Notes
        • Dynamic Checks
        • Limitations
        • Pthreads support
    • 使用emrun运行HTML文件
      • 特性
      • Quick how-to
      • Choosing the browser to run
      • Security implications
      • Controlling web server operation
      • Controlling log output
      • Cleaning up after the run
      • Running web pages in Firefox
      • Running web pages on an Android device
    • 部署Emscripten编译后页面
      • Build Files and Custom Shell
      • Optimizing Download Sizes
      • Optimizing Page Startup Times
      • Providing a Quick Second Time Load
      • Reserving Memory for Compiled Code
      • Robust Error Handling
      • Prepare for The Web Environment
    • 在GitLab上构建和部署
      • A sample .gitlab-ci.yml
    • Emscripten Contrib Ports
      • contrib.glfw3
  • 移植
    • Code Portability and Limitations
      • 移植指南
        • Current Web limitations
        • Code that cannot be compiled
        • Code that compiles but might run slowly
        • Other issues
      • API Limitations
        • Networking
        • File Systems
        • Application Main Loop
        • Other APIs
      • Function Pointer Issues
        • Debugging function pointer issues
        • Working around function pointer issues
      • Specific Browser Limitations
    • Emscripten运行时环境
      • Input/output
      • File Systems
      • Browser main loop
        • Implementing an asynchronous main loop in C/C++
        • Using Asyncify to yield to the browser
      • Execution lifecycle
      • Emscripten memory representation
    • 链接 C++ 和 JavaScript
      • Interacting with code
        • Calling compiled C functions from JavaScript using ccall/cwrap
        • Interacting with an API written in C/C++ from NodeJS
        • Call compiled C/C++ code “directly” from JavaScript
        • Calling JavaScript from C/C++
        • Implement a C API in JavaScript
        • Calling JavaScript functions as function pointers from C
        • Access memory from JavaScript
        • Affect execution behaviour
        • Environment variables
        • Binding C++ and JavaScript — WebIDL Binder and Embind
        • Binding C/C++ and JavaScript - Node-API
      • Embind
        • A quick example
        • Binding libraries
        • Classes
        • Memory management
        • Value types
        • Advanced class concepts
        • Overloaded functions
        • Enums
        • Constants
        • Memory views
        • Using val to transliterate JavaScript to C++
        • Built-in type conversions
        • TypeScript Definitions
        • Performance
      • WebIDL Binder
        • A quick example
        • Modular output
        • Using C++ classes in JavaScript
        • Attributes
        • Pointers, References, Value types (Ref and Value)
        • Const
        • Un-deletable classes (NoDelete)
        • Defining inner classes and classes inside namespaces (Prefix)
        • Operators
        • enums
        • Sub-classing C++ base classes in JavaScript (JSImplementation)
        • Pointers and comparisons
        • NULL
        • void*
        • WebIDL types
        • Test and example code
    • 文件和文件系统
      • 文件系统概述
        • Emscripten file system runtime environment
        • Emscripten file system architecture
      • 打包文件
        • Packaging using emcc
        • Packaging using the file packager tool
        • Changing the data file location
        • Modifying file locations in the virtual file system
        • Valid Character Set
        • Monitoring file usage
        • Preloading files
        • Test code
      • Synchronous Virtual XHR Backed File System Usage
        • Test code
        • Instructions
    • 多媒体和图形
      • Emscripten的EGL支持
        • What EGL is not?
        • How to create a WebGL context using EGL?
        • Implementation status and notes
      • Emscripten中的OpenGL支持
        • WebGL-friendly subset of OpenGL ES 2.0/3.0
        • OpenGL ES 2.0/3.0 emulation
        • Emulation of older Desktop OpenGL API features
        • OpenGL ES extensions
        • Test code/examples
        • Bug Reports
    • Audio
      • Supported OpenAL extensions
      • Guidelines for Audio on Emscripten
      • Emscripten-specific capture behavior
      • Useful implementation details of OpenAL capture
      • Improving and extending the implementation
    • 调试
      • Debugging in the browser
      • Debug mode (EMCC_DEBUG)
      • Compiler settings
      • Sanitizers
      • emcc verbose output
      • Manual print debugging
      • Debugging with Chrome Devtools
      • Handling C++ Exceptions from JavaScript
      • Emscripten-specific issues
        • Memory Alignment Issues
        • Function Pointer Issues
        • Infinite loops
      • Profiling
        • Speed
        • Memory
      • AutoDebugger
        • AutoDebugger Regression Workflow
      • Useful Links
      • Need help?
    • Pthreads support
      • Compiling with pthreads enabled
      • Additional flags
      • Proxying
      • Blocking on the main browser thread
      • Special considerations
      • Allocator performance
      • Running code and tests
    • Networking
      • Emscripten WebSockets API
      • Emulated POSIX TCP Sockets over WebSockets
      • Full POSIX Sockets over WebSocket Proxy Server
      • XmlHttpRequests and Fetch API
      • WebRTC and UDP
    • Using SIMD with WebAssembly
    • GCC/Clang SIMD Vector Extensions
    • WebAssembly SIMD Intrinsics
    • Limitations and behavioral differences
    • Optimization considerations
    • Compiling SIMD code targeting x86 SSE* instruction sets
    • Compiling SIMD code targeting ARM NEON instruction set
    • C++ Exceptions Support
      • Emscripten (JavaScript-based) Exception Support
      • WebAssembly Exception Handling-based Support
      • Debugging Exceptions
        • Stack Traces
        • Handling C++ Exceptions from JavaScript
      • Using Exceptions and setjmp-longjmp Together
    • C setjmp-longjmp Support
      • JavaScript-based setjmp-longjmp Support
      • WebAssembly Exception Handling-based setjmp-longjmp Support
      • Using Exceptions and setjmp-longjmp Together
    • Asynchronous Code
      • Sleeping / yielding to the event loop
      • Making async Web APIs behave as if they were synchronous
      • Ways to use Asyncify APIs in older engines
      • More on ASYNCIFY_IMPORTS
      • Asyncify with Dynamic Linking
      • Usage with Embind
      • Usage with ccall
      • Differences Between Asyncify and JSPI
      • Optimizing Asyncify
      • Potential problems
        • Stack overflows (Asyncify)
        • Reentrancy
        • Starting to rewind with compiled code on the stack (Asyncify)
      • Migrating from older Asyncify APIs
    • 构建项目
      • Integrating with a build system
      • Emscripten linker output files
      • Building projects with optimizations
      • Building projects with debug information
      • Using libraries
      • Emscripten Ports
        • Contrib ports
        • Adding more ports
        • External ports
      • Build system issues
        • Build system self-execution
        • Faux Dynamic Linking
        • Configure may run checks that appear to fail
        • Archive (.a) files
      • Manually using emcc
      • Detecting Emscripten in Preprocessor
      • Using a compiler wrapper
      • pkg-config
      • Examples / test code
      • Troubleshooting
  • API参考
    • emscripten.h
      • Inline assembly/JavaScript
        • 定义
      • Calling JavaScript From C/C++
        • Function pointer types for callbacks
        • 函数
      • Browser Execution Environment
        • 函数
      • Asynchronous File System API
        • Typedefs
        • 函数
      • Asynchronous IndexedDB API
      • Compiling
      • Worker API
        • Typedefs
        • 函数
      • Logging utilities
        • 定义
        • 函数
      • Socket event registration
        • Callback functions
        • 函数
      • Unaligned types
        • Typedefs
      • Pseudo-synchronous functions
        • Sleeping
        • Network
        • IndexedDB
      • Asyncify functions
        • Typedefs
        • 函数
      • ABI functions
    • html5.h
      • 如何使用这个API
        • Registration functions
        • 回调函数
        • Functions affected by web security
        • Test/Example code
      • General types
      • Function result values
      • Keys
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Mouse
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Wheel
        • Defines
        • Struct
        • 回调函数
        • Functions
      • UI
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Focus
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Device orientation
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Device motion
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Orientation
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Fullscreen
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Pointerlock
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Visibility
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Touch
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Gamepad
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Battery
        • Defines
        • Struct
        • 回调函数
        • Functions
      • Vibration
        • Functions
      • Page unload
        • Defines
        • 回调函数
        • Functions
      • WebGL context
        • Defines
        • Struct
        • 回调函数
        • Functions
      • CSS
        • Functions
      • Animation and Timing
        • Functions
      • Throw
        • Functions
    • console.h
      • Functions
    • preamble.js
      • Calling compiled C functions from JavaScript
        • ccall()
        • cwrap()
      • Accessing memory
        • setValue()
        • getValue()
      • Conversion functions — strings, pointers and arrays
        • UTF8ToString()
        • stringToUTF8()
        • UTF16ToString()
        • stringToUTF16()
        • UTF32ToString()
        • stringToUTF32()
        • AsciiToString()
        • intArrayFromString()
        • intArrayToString()
        • writeArrayToMemory()
      • Run dependencies
        • addRunDependency()
        • removeRunDependency()
      • Stack trace
        • stackTrace()
      • Type accessors for the memory model
        • HEAP8
        • HEAP16
        • HEAP32
        • HEAPU8
        • HEAPU16
        • HEAPU32
        • HEAPF32
        • HEAPF64
    • 文件系统API
      • New File System: WasmFS
      • Including File System Support
      • Persistent data
      • File systems
        • MEMFS
        • NODEFS
        • NODERAWFS
        • IDBFS
        • WORKERFS
        • PROXYFS
      • Devices
        • FS.makedev()
        • FS.registerDevice()
      • Setting up standard I/O devices
        • FS.init()
      • File system API
        • FS.mount()
        • FS.unmount()
        • FS.syncfs()
        • FS.mkdir()
        • FS.mkdev()
        • FS.symlink()
        • FS.rename()
        • FS.rmdir()
        • FS.unlink()
        • FS.readlink()
        • FS.stat()
        • FS.lstat()
        • FS.chmod()
        • FS.lchmod()
        • FS.fchmod()
        • FS.chown()
        • FS.lchown()
        • FS.fchown()
        • FS.truncate()
        • FS.ftruncate()
        • FS.utime()
        • FS.open()
        • FS.close()
        • FS.llseek()
        • FS.read()
        • FS.write()
        • FS.readFile()
        • FS.writeFile()
        • FS.createLazyFile()
        • FS.createPreloadedFile()
        • FS.trackingDelegate[callback name]
      • File types
        • FS.isFile()
        • FS.isDir()
        • FS.isLink()
        • FS.isChrdev()
        • FS.isBlkdev()
        • FS.isSocket()
      • Paths
        • FS.cwd()
        • FS.chdir()
        • FS.readdir()
        • FS.lookupPath()
        • FS.analyzePath()
        • FS.getPath()
    • Fetch API
      • Introduction
      • Persisting data
        • Persisting data bytes from memory
        • Deleting a file from IndexedDB
      • Synchronous Fetches
      • Waitable Fetches
      • Tracking Progress
      • Managing Large Files
        • Downloading directly to IndexedDB
        • Streaming Downloads
        • Byte Range Downloads
      • TODO To Document
    • 模块对象
      • Creating the Module object
      • Compilation settings
      • Affecting execution
        • Module.arguments
        • Module.buffer
        • Module.wasmMemory
        • Module.locateFile
        • Module.logReadFiles
        • Module.printWithColors
        • Module.onAbort
        • Module.onRuntimeInitialized
        • Module.noExitRuntime
        • Module.noInitialRun
        • Module.preInit
        • Module.preinitializedWebGLContext
        • Module.preRun
        • Module.print
        • Module.printErr
        • Module.mainScriptUrlOrBlob
      • Other methods
        • Module.destroy()
        • Module.getPreloadedPackage()
        • Module.instantiateWasm()
        • Module.onCustomMessage()
        • Module.fetchSettings()
    • val.h
      • val
        • val::array()
        • val::object()
        • val::u8string()
        • val::u16string()
        • val::undefined()
        • val::null()
        • val::as_handle()
        • val::take_ownership()
        • val::global()
        • val::module_property()
        • val::val()
        • val::val()
        • val::val()
        • val::val()
        • val::~val()
        • val::operator=()
        • val::operator=()
        • val::hasOwnProperty()
        • val::new_()
        • val::operator[]()
        • val::set()
        • val::operator()()
        • val::call()
        • val::as()
        • val::typeof()
        • val::vecFromJSArray()
        • val::convertJSArrayToNumberVector()
        • val::await()
        • val::operator co_await()
    • bind.h (under-construction)
      • 如何使用本API
        • 定义
      • Policies
        • arg
        • ret_val
        • allow_raw_pointers
        • allow_raw_pointers::type
        • allow_raw_pointer
      • select_overload and select_const
        • select_overload()
        • select_overload()
        • select_const()
        • optional_override()
      • Functions
        • function()
      • Value tuples
        • value_array
      • Value structs
        • value_object
      • Smart pointers
        • default_smart_ptr_trait
        • smart_ptr_trait
        • smart_ptr_trait
      • Classes
        • wrapper
        • EMSCRIPTEN_WRAPPER()
        • base
        • pure_virtual
        • constructor
        • class_
      • Vectors
        • register_vector()
      • Maps
        • register_map()
      • Enums
        • enum_
      • Constants
        • constant()
    • trace.h
      • Usage
        • Compiler Interaction
        • Initialization and Teardown
        • Contexts
        • Frames
        • Annotating Allocations
        • Overall Memory Usage
        • Logging Messages
        • Tasks
        • Reporting Errors
      • Running the Server
      • Design Notes
        • Client / Server Design
        • Data Batching
        • Do Not Perturb The Heap
      • 函数
    • fiber.h
      • API Reference
        • Types
        • Functions
    • proxying.h
      • API Reference
        • Types
        • Functions
        • C++ API
    • stack.h
    • Wasm Workers API
      • Quick Example
      • Introduction
      • Pthreads vs Wasm Workers: Which One to Use?
        • Pthreads can proxy JS functions
        • Pthreads have cancellation points
        • Pthreads may start up synchronously - Wasm Workers always start asynchronously
        • Pthread topology is flat - Wasm Workers are hierarchical
        • Pthreads can use the Wasm Worker synchronization API, but not vice versa
        • Pthreads have a “thread main” function and atexit handlers
        • Pthreads have a per-thread incoming proxy message queue, Wasm Workers do not
        • Pthreads synchronize wallclock times
        • Input events API backproxies only to pthreads
        • Pthread vs emscripten_lock implementation differences
        • Memory requirements
        • Generated code size
        • API Differences
      • Limitations
      • Example Code
    • Wasm Audio Worklets API
      • Development Overview
      • Programming Example
      • Synchronizing audio thread with the main thread
      • More Examples
    • 高级APIs
      • settings.js
      • preamble.js
        • allocate()
      • 扩展文件系统API
        • FS.hashName()
        • FS.hashAddNode()
        • FS.hashRemoveNode()
        • FS.lookupNode()
        • FS.createNode()
        • FS.destroyNode()
        • FS.isRoot()
        • FS.isMountpoint()
        • FS.isFIFO()
        • FS.nextfd()
        • FS.getStream()
        • FS.createStream()
        • FS.closeStream()
        • FS.getStreamFromPtr()
        • FS.getPtrForStream()
        • FS.major()
        • FS.minor()
        • FS.getDevice()
        • FS.getMounts()
        • FS.lookup()
        • FS.mknod()
        • FS.create()
        • FS.allocate()
        • FS.mmap()
        • FS.ioctl()
        • FS.staticInit()
        • FS.quit()
        • FS.indexedDB()
        • FS.DB_NAME()
        • FS.getMode()
        • FS.findObject()
        • FS.createPath()
        • FS.createFile()
        • FS.createDataFile()
        • FS.createDevice()
        • FS.forceLoadFile()
  • 工具参考
    • Emscripten SDK (emsdk)
      • Command line syntax
        • Arguments
        • Tools and SDK targets
      • SDK concepts
      • Emscripten Compiler Configuration File (.emscripten)
      • “How to” guides
        • How do I just get the latest SDK?
        • How do I use emsdk?
        • How do I check which versions of the SDK and tools are installed?
        • How do I install a tool/SDK version?
        • How do I remove a tool or an SDK?
        • How do I check for updates to the Emscripten SDK?
        • How do I change the currently active SDK version?
        • How do I install and activate old Emscripten SDKs and tools?
        • How do I track the latest changes with the SDK?
        • How do I use my own Emscripten fork with the SDK?
    • Emscripten编译器前端(emcc)
      • Command line syntax
        • 参数
      • Environment variables
    • Emscripten Windows 命令提示符(emcmdprompt.bat)
      • Command line syntax
    • Emscripten Compiler Settings
      • ASSERTIONS
      • STACK_OVERFLOW_CHECK
      • CHECK_NULL_WRITES
      • VERBOSE
      • INVOKE_RUN
      • EXIT_RUNTIME
      • STACK_SIZE
      • MALLOC
      • ABORTING_MALLOC
      • INITIAL_HEAP
      • INITIAL_MEMORY
      • MAXIMUM_MEMORY
      • ALLOW_MEMORY_GROWTH
      • MEMORY_GROWTH_GEOMETRIC_STEP
      • MEMORY_GROWTH_GEOMETRIC_CAP
      • MEMORY_GROWTH_LINEAR_STEP
      • MEMORY64
      • INITIAL_TABLE
      • ALLOW_TABLE_GROWTH
      • GLOBAL_BASE
      • TABLE_BASE
      • USE_CLOSURE_COMPILER
      • CLOSURE_WARNINGS
      • IGNORE_CLOSURE_COMPILER_ERRORS
      • DECLARE_ASM_MODULE_EXPORTS
      • INLINING_LIMIT
      • SUPPORT_BIG_ENDIAN
      • SAFE_HEAP
      • SAFE_HEAP_LOG
      • EMULATE_FUNCTION_POINTER_CASTS
      • EXCEPTION_DEBUG
      • DEMANGLE_SUPPORT
      • LIBRARY_DEBUG
      • SYSCALL_DEBUG
      • SOCKET_DEBUG
      • DYLINK_DEBUG
      • FS_DEBUG
      • SOCKET_WEBRTC
      • WEBSOCKET_URL
      • PROXY_POSIX_SOCKETS
      • WEBSOCKET_SUBPROTOCOL
      • OPENAL_DEBUG
      • WEBSOCKET_DEBUG
      • GL_ASSERTIONS
      • TRACE_WEBGL_CALLS
      • GL_DEBUG
      • GL_TESTING
      • GL_MAX_TEMP_BUFFER_SIZE
      • GL_UNSAFE_OPTS
      • FULL_ES2
      • GL_EMULATE_GLES_VERSION_STRING_FORMAT
      • GL_EXTENSIONS_IN_PREFIXED_FORMAT
      • GL_SUPPORT_AUTOMATIC_ENABLE_EXTENSIONS
      • GL_SUPPORT_SIMPLE_ENABLE_EXTENSIONS
      • GL_TRACK_ERRORS
      • GL_SUPPORT_EXPLICIT_SWAP_CONTROL
      • GL_POOL_TEMP_BUFFERS
      • GL_EXPLICIT_UNIFORM_LOCATION
      • GL_EXPLICIT_UNIFORM_BINDING
      • USE_WEBGL2
      • MIN_WEBGL_VERSION
      • MAX_WEBGL_VERSION
      • WEBGL2_BACKWARDS_COMPATIBILITY_EMULATION
      • FULL_ES3
      • LEGACY_GL_EMULATION
      • GL_FFP_ONLY
      • GL_PREINITIALIZED_CONTEXT
      • USE_WEBGPU
      • STB_IMAGE
      • GL_DISABLE_HALF_FLOAT_EXTENSION_IF_BROKEN
      • GL_WORKAROUND_SAFARI_GETCONTEXT_BUG
      • GL_ENABLE_GET_PROC_ADDRESS
      • JS_MATH
      • POLYFILL_OLD_MATH_FUNCTIONS
      • LEGACY_VM_SUPPORT
      • ENVIRONMENT
      • LZ4
      • DISABLE_EXCEPTION_CATCHING
      • EXCEPTION_CATCHING_ALLOWED
      • DISABLE_EXCEPTION_THROWING
      • EXPORT_EXCEPTION_HANDLING_HELPERS
      • EXCEPTION_STACK_TRACES
      • WASM_EXNREF
      • NODEJS_CATCH_EXIT
      • NODEJS_CATCH_REJECTION
      • ASYNCIFY
      • ASYNCIFY_IMPORTS
      • ASYNCIFY_IGNORE_INDIRECT
      • ASYNCIFY_STACK_SIZE
      • ASYNCIFY_REMOVE
      • ASYNCIFY_ADD
      • ASYNCIFY_PROPAGATE_ADD
      • ASYNCIFY_ONLY
      • ASYNCIFY_ADVISE
      • ASYNCIFY_LAZY_LOAD_CODE
      • ASYNCIFY_DEBUG
      • ASYNCIFY_EXPORTS
      • JSPI
      • JSPI_EXPORTS
      • JSPI_IMPORTS
      • EXPORTED_RUNTIME_METHODS
      • EXTRA_EXPORTED_RUNTIME_METHODS
      • INCOMING_MODULE_JS_API
      • CASE_INSENSITIVE_FS
      • FILESYSTEM
      • FORCE_FILESYSTEM
      • NODERAWFS
      • NODE_CODE_CACHING
      • EXPORTED_FUNCTIONS
      • EXPORT_ALL
      • EXPORT_KEEPALIVE
      • RETAIN_COMPILER_SETTINGS
      • DEFAULT_LIBRARY_FUNCS_TO_INCLUDE
      • INCLUDE_FULL_LIBRARY
      • RELOCATABLE
      • MAIN_MODULE
      • SIDE_MODULE
      • RUNTIME_LINKED_LIBS
      • BUILD_AS_WORKER
      • PROXY_TO_WORKER
      • PROXY_TO_WORKER_FILENAME
      • PROXY_TO_PTHREAD
      • LINKABLE
      • STRICT
      • IGNORE_MISSING_MAIN
      • STRICT_JS
      • WARN_ON_UNDEFINED_SYMBOLS
      • ERROR_ON_UNDEFINED_SYMBOLS
      • SMALL_XHR_CHUNKS
      • HEADLESS
      • DETERMINISTIC
      • MODULARIZE
      • EXPORT_ES6
      • USE_ES6_IMPORT_META
      • EXPORT_NAME
      • DYNAMIC_EXECUTION
      • BOOTSTRAPPING_STRUCT_INFO
      • EMSCRIPTEN_TRACING
      • USE_GLFW
      • WASM
      • STANDALONE_WASM
      • BINARYEN_IGNORE_IMPLICIT_TRAPS
      • BINARYEN_EXTRA_PASSES
      • WASM_ASYNC_COMPILATION
      • DYNCALLS
      • WASM_BIGINT
      • EMIT_PRODUCERS_SECTION
      • EMIT_EMSCRIPTEN_LICENSE
      • LEGALIZE_JS_FFI
      • USE_SDL
      • USE_SDL_GFX
      • USE_SDL_IMAGE
      • USE_SDL_TTF
      • USE_SDL_NET
      • USE_ICU
      • USE_ZLIB
      • USE_BZIP2
      • USE_GIFLIB
      • USE_LIBJPEG
      • USE_LIBPNG
      • USE_REGAL
      • USE_BOOST_HEADERS
      • USE_BULLET
      • USE_VORBIS
      • USE_OGG
      • USE_MPG123
      • USE_FREETYPE
      • USE_SDL_MIXER
      • USE_HARFBUZZ
      • USE_COCOS2D
      • USE_MODPLUG
      • SDL2_IMAGE_FORMATS
      • SDL2_MIXER_FORMATS
      • USE_SQLITE3
      • SHARED_MEMORY
      • WASM_WORKERS
      • AUDIO_WORKLET
      • WEBAUDIO_DEBUG
      • PTHREAD_POOL_SIZE
      • PTHREAD_POOL_SIZE_STRICT
      • PTHREAD_POOL_DELAY_LOAD
      • DEFAULT_PTHREAD_STACK_SIZE
      • PTHREADS_PROFILING
      • ALLOW_BLOCKING_ON_MAIN_THREAD
      • PTHREADS_DEBUG
      • EVAL_CTORS
      • TEXTDECODER
      • EMBIND_STD_STRING_IS_UTF8
      • EMBIND_AOT
      • OFFSCREENCANVAS_SUPPORT
      • OFFSCREENCANVASES_TO_PTHREAD
      • OFFSCREEN_FRAMEBUFFER
      • FETCH_SUPPORT_INDEXEDDB
      • FETCH_DEBUG
      • FETCH
      • WASMFS
      • SINGLE_FILE
      • AUTO_JS_LIBRARIES
      • AUTO_NATIVE_LIBRARIES
      • MIN_FIREFOX_VERSION
      • MIN_SAFARI_VERSION
      • MIN_CHROME_VERSION
      • MIN_NODE_VERSION
      • SUPPORT_ERRNO
      • MINIMAL_RUNTIME
      • MINIMAL_RUNTIME_STREAMING_WASM_COMPILATION
      • MINIMAL_RUNTIME_STREAMING_WASM_INSTANTIATION
      • SUPPORT_LONGJMP
      • DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR
      • HTML5_SUPPORT_DEFERRING_USER_SENSITIVE_REQUESTS
      • MINIFY_HTML
      • MAYBE_WASM2JS
      • ASAN_SHADOW_SIZE
      • USE_OFFSET_CONVERTER
      • LOAD_SOURCE_MAP
      • DEFAULT_TO_CXX
      • PRINTF_LONG_DOUBLE
      • SEPARATE_DWARF_URL
      • ERROR_ON_WASM_CHANGES_AFTER_LINK
      • ABORT_ON_WASM_EXCEPTIONS
      • PURE_WASI
      • IMPORTED_MEMORY
      • SPLIT_MODULE
      • AUTOLOAD_DYLIBS
      • ALLOW_UNIMPLEMENTED_SYSCALLS
      • TRUSTED_TYPES
      • POLYFILL
      • RUNTIME_DEBUG
      • LEGACY_RUNTIME
      • SIGNATURE_CONVERSIONS
  • 代码优化
    • 如何优化代码
    • How Emscripten optimizes
    • Link Times
    • Advanced compiler settings
    • WebAssembly
    • Code size
      • Trading off code size and performance
      • Miscellaneous code size tips
    • LTO
    • EVAL_CTORS
    • Very large codebases
      • Running by itself
      • Module Splitting
    • Other optimization issues
      • C++ exceptions
      • C++ RTTI
      • Memory Growth
      • Viewing code optimization passes
      • Allocation
    • Unsafe optimizations
    • Profiling
    • Troubleshooting poor performance
  • Optimizing WebGL
    • Which GL Mode To Target?
    • How To Profile WebGL
    • Avoid Redundant Calls
    • Techniques To Minimize API Calls
    • Avoid GPU-CPU Sync Points
    • GPU Driver Friendly Memory Access Behavior
    • When The GPU Is The Bottleneck
    • Optimizing Load Times and Other Best Practices
    • Migrating To WebGL 2
  • 使用Sanitizers进行调试
    • Undefined Behaviour Sanitizer
      • Catching Null Dereference
      • Minimal Runtime
    • Address Sanitizer
      • Examples
        • Buffer Overflow
        • Use After Free
        • Memory Leaks
        • Use After Return
      • Configuration
        • Disabling malloc/free Stack Traces
      • Comparison to SAFE_HEAP
  • 从源代码构建Emscripten
    • Building LLVM
    • Building Binaryen
      • Emscripten工具链需求
        • What you’ll need
        • Test which tools are installed
      • 从源代码手动构建时Emscripten的配置
        • Creating the compiler configuration file
        • Locating the compiler configuration file (.emscripten)
        • Compiler configuration file-format
        • Editing the compiler configuration file
      • 验证Emscripten开发环境
        • Testing the environment
        • Troubleshooting
  • 参与贡献Emscripten
    • Contributing
      • Getting started
      • Next steps
    • 开发指南
      • Setting up
      • Repositories and branches of interest
      • Submitting patches
      • Code reviews
      • Compiler overview
      • Emscripten Test Suite
      • Bisecting
      • Working with C structs and defines
      • See also
    • AUTHORS
  • Profiling the Toolchain
    • Quick Example
    • Details
      • Profiling Tool Commands
    • Instrumenting Python Scripts
      • Python Profiling Blocks
  • 关于本站
    • 搜索本站
    • 报告bugs
    • Contributing to the site
    • Building the site
      • Installing Sphinx
      • Site builds
      • SDK Builds
      • Build version
    • Writing and updating articles
      • Style guide
      • How to link to a document or heading
      • Recommended section/heading markup
      • Working in markdown
    • Read the docs theme
    • Site license
索引
 
Emscripten Logo
Emscripten中文网
» 搜索
Emscripten中文网
» 搜索
  • 关于本站

© Copyright 2014-2024, Emscripten Contributors.