gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:14:57 26 4
gpt4 key购买 nike

我正在尝试使用 Emscripten 的 emcc 构建一个项目(即 Angband 的源代码 - http://rephial.org/downloads/3.3/angband-v3.3.2.tar.gz),以便将其移植到 Javascript 并最终构建一个在线版本。

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

配置 ./configure
制作

它开始成功开始生成 LLVM 位码 .o 文件,但随后它卡在 main-gcu.c 上,并显示“main-gcu.c:43:11: fatal error: 'ncurses.h' file not found”

我相信 main-gcu.c 是唯一引用 ncurses 的文件,但我无法弄清楚如何在编译时包含该库。有没有办法用'make'指定包含ncurses,或者我应该用'emcc main-gcu.c -c -lncurses'单独编译main-gcu.c文件?我尝试这样做,但这导致了另一个错误,即 emcc 无法在两个级别下找到其他实际包含的头文件(它找不到 main-gcu.c 包含的头文件中包含的头文件 - 无论如何要解决这个问题? )。

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

谢谢!

最佳答案

我认为您误解了 Emscripten 的编译。我将尝试指出您面临的一些问题。

  • 一般规则是 Emscripten 的所有工具 可以转 LLVM 格式 (例如 BITCODE)转换为 JavaScript。 emconfigure , emmake , ...修改构建环境,以便将源代码编译为 LLVM 格式之一(规则有异常(exception),但没关系)。因此,您想要链接到最终结果的任何内容也必须采用 LLVM 格式(默认情况下 ncurses 不是)。
  • 由于输出是 JavaScript,因此没有机会在不同的线程中执行任何程序代码。虽然很多 C/C++ 代码确实使用线程用于 UI 和其他线程进行处理,但这样的模型确实 不是 为 Emscripten 工作。因此,为了让软件编译/运行,您必须重写使用线程的部分。见 emscripten_set_main_loop为指针。
  • 即使您编译了库,您也必须静态 将它们链接到 Emscripten。在这一点上,它不是一个技术问题,而是一个许可证问题,因为如果您的库是根据例如许可的LGPL 由于静态链接的 GPL 条款是有效的。

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

    关于gcc - 如何在 Mac 上使用 Emscripten emcc 和 make 时包含 ncurses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10767489/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com