无法使用Emscripten进行GMP lib编译(2)

时间:2015-04-20 19:44:40

标签: c++ gmp emscripten

我有点新手。我的系统是OSX。

我已经得到了使用SDL2的emscripten,非常棒。我用命令编译:

./emcc /Users/elliotmacneille/Projects/the\ simplifier/the\ simplifier/main.cpp -s USE_SDL=2 -s LEGACY_GL_EMULATION=1 -std=c++11 -o money99.html

来自emscripten目录中的命令行。

现在我希望GMP能够使用它。我的计算机上有头文件libgmp.a和libgmp.10.dylib,但我不知道将它们放在哪里用于emscripten。 我还使用emscripten创建了一个gmp.js,再次不确定放在哪里。

每当我尝试编译时,我都会得到这个:

"fatal error: 
      'gmp.h' file not found
#include <gmp.h>
         ^
1 error generated."

我应该在哪里放置头文件以及我应该放在哪个库中? 我在Xcode中编译libgmp没有问题,但我想使用emscripten。

1 个答案:

答案 0 :(得分:4)

您必须告诉编译器库头​​使用-I命令行选项的位置,然后使用-l命令行选项链接到哪些库。类似的东西:

emcc myfile.cpp -o myoutput.html -Lpath/to/gmp/include -lgmp

这不是特定于emscripten的:它是像GCC和LLVM这样的C / C ++编译器通常如何工作的。您不必为SDL执行此操作,因为it's special

尽管如此,您将无法使用libgmp.alibgmp.10.dylib!那些目标是x86(或至少它们在你的Mac上),你希望它们是LLVM bitcode或JavaScript。似乎没有一个容易获得的gmp端口,所以最简单的可能是build it yourself and link it into your application

gmp通常使用内联汇编进行构建,但您可以从其构建中禁用它。查看how this was done for PNaCl inside of naclports并为自己的构建做同样的事情可能很有用。