【问题标题】:Can't get GMP lib compiling with Emscripten (2)无法使用 Emscripten 编译 GMP lib (2)
【发布时间】:2015-09-09 04:04:12
【问题描述】:

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

我已经让 emscripten 与 SDL2 一起工作,这太棒了。我用命令编译:

./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。

【问题讨论】:

  • 我找到了头文件...我把它们全部放在...emscripten/incoming/system/local/include中。我仍然不知道把图书馆本身放在哪里。我现在得到的错误是:警告:未解析符号:警告:未解析符号:__gmpz_init 警告:未解析符号:__gmpz_abs 警告:未解析符号:__gmpz_add 警告:未解析符号:__gmpz_clear 警告:未解析符号:__gmpz_set_str

标签: c++ gmp emscripten


【解决方案1】:

您必须使用-I 命令行选项告诉编译器库头​​在哪里,然后使用-l 命令行选项链接到哪些库。比如:

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

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

你不能只使用libgmp.alibgmp.10.dylib!这些目标 x86(或者至少它们在您的 Mac 上),并且您希望它们是 LLVM 位码或 JavaScript。似乎没有一个容易获得的 gmp 端口,所以最简单的可能是build it yourself and link it into your application

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

【讨论】:

  • “-I”是指“-L”
猜你喜欢
  • 1970-01-01
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
相关资源
最近更新 更多