使用clang和web程序集目标时有没有办法使用sqrt

问题描述

我正在使用 clang --target=wasm32 --no-standard-libraries 将 C++ 编译为 Web 程序集。有没有办法说服clang生成sqrt?它没有找到具有此目标的

解决方法

您是否已经尝试在没有标志 --no-standard-libraries 的情况下进行编译?如果删除它,clang 可能会找到 math.h 库(因为它是标准库)。

,

这是因为 wasm32-unknown-unknown 在 Clang 中是一个完全准系统的目标,并且没有任何标准库——也就是说,没有 math.h,没有 I/O 函数,甚至没有 {{1} }.

但是,您通常可以使用 memcpy + WASI SDK 代替:https://github.com/WebAssembly/wasi-sdk

它包括整个标准库,甚至包括在兼容环境中通过 WASI standard 与文件系统交互的函数。

如果你的代码不依赖文件系统/时钟/其他I/O,那么你可以放心地使用WASI-SDK来获得--target wasm32-wasimath.hmemcpy等标准功能,并且生成的 WebAssembly 也将与任何非 WASI 环境兼容。