如何同时使用Emscripten EMCC包括ncurses的,并在Mac(How to inclu

2019-09-17 12:55发布

我试图建立一个项目(即,安格班的源- http://rephial.org/downloads/3.3/angband-v3.3.2.tar.gz ),以便其与Emscripten的EMCC移植到Javascript和最终建立一个在线版本。

我已经成功地获取进程开始

emconfigure的./configure使

它开始启动成功生成LLVM位码.o文件,但随后在主gcu.c与“主gcu.c:43:11:致命错误:‘挂断ncurses.h’找不到文件”

我相信主gcu.c是引用ncurses的唯一文件,但我无法弄清楚如何将库在编译时。 是否有指定包括“使” ncurses的一种方式,或者我应该单独编译主gcu.c文件,与“EMCC主gcu.c -c -lncurses”? 我试图这样做,但是这导致了与EMCC暂时无法找到其他实际包含的头文件两级下来(它无法找到主gcu.c包括被列入由报头报头另一个错误 - 反正解决呢? )。

我也不能肯定,如果我有/需要在Mac OSX上安装ncurses库。 所有我能真正找到是与libncurses5-dev的为Linux引用。

谢谢!

Answer 1:

我想你误会通过Emscripten编译。 我会尝试指出你面临的一些问题。

  1. 一般的规律是,Emscripten的所有工具只能LLVM格式 (例如位码 )转换为JavaScript。 emconfigureemmake...让你的源代码被编译成的LLVM格式之一修改构建环境(也有例外的规则,但没关系)。 所以,你要对你的最终结果链接什么必须是在LLVM格式,以及(在默认情况下ncurses的不算)。

  2. 由于输出是JavaScript的 ,没有机会在不同的线程来执行任何程序代码。 虽然很多C / C ++代码,并使用一个线程的用户界面和其他人进行处理,这样的模式并不Emscripten工作。 因此,为了获得该软件编译/运行,你将不得不重新编写使用线程的部分。 见emscripten_set_main_loop的指针。

  3. 即使你的库编译你就必须静态地将它们链接到Emscripten。 在这一点上是少一个技术问题,但更多的是牌照问题,因为如果你的库是在如LGPL许可由于静态链接GPL条款是有效的。

我希望所有的清晰度终于消失了;)



文章来源: How to include ncurses while using Emscripten emcc and make on Mac