【问题标题】:Building a Native Client app from nothing从无到有构建 Native Client 应用程序
【发布时间】:2012-03-15 01:37:10
【问题描述】:

从头开始构建 Native Client 应用程序需要什么?我查看了文档,并修改了几个应用程序,但是,我现在开始制作自己的应用程序,但我没有看到任何与创建本地客户端应用程序的基础相关的内容。

【问题讨论】:

    标签: c++ scons google-nativeclient


    【解决方案1】:

    根据您要使用的 SDK 版本,您有多种选择。

    Pepper 16 和 17:使用 init_project.py 或使用示例作为起点

    如果您使用的是pepper_16pepper_17,您将在SDK 的project_templates 中找到一个Python 脚本init_project.py。它将设置一整套文件(.cc、.html、.nmf),其中 cmets 指示您需要添加代码的位置。运行 python init_project.py -h 以查看它接受哪些选项。其他文档可以在 https://developers.google.com/native-client/pepper17/devguide/tutorial 找到。

    Pepper 18 及更新版本:以示例为起点

    如果您使用的是pepper_18 或更新版本,则不再包含init_project.py。相反,您可以从 examples 目录中复制一个非常小的示例(例如,hello_world_glibchello_world_newlib 用于 C 或 hello_world_interactive 用于 C++)并将其用作起点。

    完全从头开始编写

    如果您想完全从头开始编写应用程序,请首先通过编译和运行一些示例来确保 SDK 正常工作。下一步是查看 pp::Modulepp:Instance 类,您的应用需要实现这些类。

    在 HTML 方面,为 Native Client 模块编写一个带有 EMBED 元素的简单页面。然后为 loadstartprogresserrorabortloadloadendloadend 添加 JavaScript 事件处理程序,并让处理程序将事件数据写入,例如 JavaScript 控制台, 这样如果 Native Client 模块没有加载,就可以判断出了什么问题。 load_progress 示例展示了如何执行此操作。

    接下来,创建清单文件 (.nmf)。从pepper_18 起,您可以为此使用tools/ 目录中的generate_nmf.py 脚本。如果您想从头开始编写,这些示例提供了使用 newlibglibc(当前支持的两个标准 C 库)的示例。分别见hello_world_newlib/hello_world_glibc/

    如果您以前没有使用过 gcc 系列编译器,那么查看 Makefile 中的一些示例以了解要使用的编译器和链接器标志也是一个好主意。建议从头开始同时编译 32 位和 64 位。

    【讨论】:

    • 关于pepper_16 和pepper_17 的注释很有趣,我会阅读更多相关内容。但是,他们为pepper_18删除它很有趣,他们必须替换它
    • init_project.py 为旧的 SCons 构建系统生成构建脚本。在 Pepper 18 中,构建系统被 makefiles 取代,并且考虑到使用示例作为起点实际上比使用 init_project.py 更容易,因此该脚本被删除而不是重写。
    【解决方案2】:

    最简单的方法是遵循https://developers.google.com/native-client/pepper18/quick-start 的快速入门文档,尤其是教程的第 5-7 步 (https://developers.google.com/native-client/pepper18/devguide/tutorial),这似乎是您要问的问题。

    【讨论】:

      猜你喜欢
      • 2020-04-03
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多