Gcc 如何在Mac上使用Emscripten emcc和make时包含ncurses

Gcc 如何在Mac上使用Emscripten emcc和make时包含ncurses,gcc,makefile,llvm,ncurses,emscripten,Gcc,Makefile,Llvm,Ncurses,Emscripten,我正试图用Emscripten的emcc构建一个项目(即Angband的源代码),以便将其移植到Javascript并最终构建一个在线版本 我已经设法开始了这个过程 emconfigure./configure 制造 它开始成功地生成LLVM bitcode.o文件,但随后在主gcu.c上挂起,并出现“main gcu.c:43:11:致命错误:'ncurses.h'文件未找到” 我相信main gcu.c是唯一引用ncurses的文件,但我就是不知道如何在编译时包含这个库。有没有办法用“mak

我正试图用Emscripten的emcc构建一个项目(即Angband的源代码),以便将其移植到Javascript并最终构建一个在线版本

我已经设法开始了这个过程

emconfigure./configure 制造

它开始成功地生成LLVM bitcode.o文件,但随后在主gcu.c上挂起,并出现“main gcu.c:43:11:致命错误:'ncurses.h'文件未找到”

我相信main gcu.c是唯一引用ncurses的文件,但我就是不知道如何在编译时包含这个库。有没有办法用“make”指定包含ncurses,或者我应该用“emcc main gcu.c-c-lncurses”单独编译主gcu.c文件?我试着这样做,但这导致了另一个错误,emcc在两个级别下找不到其他实际包含的头文件(它找不到主gcu.c包含的头文件包含的头文件-无论如何要修复它?)

我也不确定是否需要在Mac OSX上安装ncurses库。我真正能找到的只是对Linux版libncurses5 dev的引用


谢谢

我认为您误解了通过Emscripten进行的编译。我将试着指出你们面临的几个问题

  • 一般规则是,所有Emscripten工具只能将LLVM格式(如位码)转换为JavaScript
    emconfigure
    emmake
    修改生成环境,以便将源代码编译为LLVM格式之一(规则有例外,但无例外)。因此,您想要针对最终结果链接的任何内容也必须采用LLVM格式(默认情况下,ncurses不是)

  • 由于输出是JavaScript,因此没有机会在不同的线程中执行任何程序代码。虽然许多C/C++代码确实使用一个线程用于UI和其他处理,但这样的模型不适用于Emscripten。因此,为了让软件编译/运行,您必须重写使用线程的部分。有关指针,请参见
    emscripten\u set\u main\u loop

  • 即使编译了库,也必须将它们链接到Emscripten。在这一点上,这不是一个技术问题,而是一个许可证问题,因为如果您的库由于静态链接而在LGPL下获得许可,那么GPL条款是有效的

  • 我希望所有的清晰最终都消失了;)