我正在尝试使用emscripten来移植一些需要libm
的C代码。通常,它使用我的系统版本,我不需要担心链接到它,但我需要手动链接它与emscripten。
如何关联libm
?
我已尝试使用openlibm
,但当make
使用emcc
(emscripten编译器)时,它无法找到所有依赖项,因为openlibm
仍依赖于系统标头
我也尝试使用GNU libc
来源,但无法导航Makefile
。
我需要的是由emcc
生成的bitcode,在使用编译器中的-lm
标志编译为JavaScript时链接到。
答案 0 :(得分:1)
libm
已关联。
emcc
编译器如果指定(-lm
)将无法链接它,因为这需要显式搜索路径(-L/path/
)。它有一个不应该被覆盖的内部实现,除非你可以提供你自己的emcc
编译的bitcode。
编译器将为未解析的库抛出警告,直到您编译为JavaScript,因为在最终编译之前不包括libm
。中间目标上的这些错误可以而且应该被忽略 - 这是一个已知的问题。
可以在https://github.com/kripken/emscripten/tree/master/system/include找到通过编译器获得的可用库。具体而言,libm
中包含musl
。它并不明确,但{{1}}常见问题解答中包含了这一点。