3

我正在尝试使用 emscripten 移植一些需要libm. 通常,它使用我系统的版本,我不需要担心链接到它,但我需要手动将它与 emscripten 链接。

我怎样才能链接libm

我尝试过使用openlibm,但是当我make使用emcc(emscripten 编译器)时,它无法找到所有依赖项,因为openlibm仍然取决于系统头文件。

我也尝试过使用 GNUlibc源代码,但无法导航那些Makefiles.

我需要的是由 生成的位码emcc,在编译为 JavaScript 时使用-lm编译器中的标志链接到该位码。

4

1 回答 1

2

libm默认情况下是链接的。

如果emcc指定 (as ),编译器将无法链接它-lm,因为这需要显式搜索路径 (with -L/path/)。它有一个不应被覆盖的内部实现,除非您可以提供自己的emcc编译位码。

在您编译为 JavaScript 之前,编译器将对未解析的库发出警告,因为libm在最终编译之前不包括在内。中间目标上的这些错误可以而且应该被忽略 - 这是一个已知问题。

通过编译器可用的库可以在https://github.com/kripken/emscripten/tree/master/system/include找到。具体来说,libm包含在muslheaders中。它不是明确的,但musl常见问题解答中涵盖了这一点。

于 2014-07-22T02:18:50.913 回答