【发布时间】:2012-03-15 01:37:10
【问题描述】:
从头开始构建 Native Client 应用程序需要什么?我查看了文档,并修改了几个应用程序,但是,我现在开始制作自己的应用程序,但我没有看到任何与创建本地客户端应用程序的基础相关的内容。
【问题讨论】:
标签: c++ scons google-nativeclient
从头开始构建 Native Client 应用程序需要什么?我查看了文档,并修改了几个应用程序,但是,我现在开始制作自己的应用程序,但我没有看到任何与创建本地客户端应用程序的基础相关的内容。
【问题讨论】:
标签: c++ scons google-nativeclient
根据您要使用的 SDK 版本,您有多种选择。
Pepper 16 和 17:使用 init_project.py 或使用示例作为起点
如果您使用的是pepper_16 或pepper_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_glibc 或 hello_world_newlib 用于 C 或 hello_world_interactive 用于 C++)并将其用作起点。
完全从头开始编写
如果您想完全从头开始编写应用程序,请首先通过编译和运行一些示例来确保 SDK 正常工作。下一步是查看 pp::Module 和 pp:Instance 类,您的应用需要实现这些类。
在 HTML 方面,为 Native Client 模块编写一个带有 EMBED 元素的简单页面。然后为 loadstart、progress、error、abort、load、loadend 和 loadend 添加 JavaScript 事件处理程序,并让处理程序将事件数据写入,例如 JavaScript 控制台, 这样如果 Native Client 模块没有加载,就可以判断出了什么问题。 load_progress 示例展示了如何执行此操作。
接下来,创建清单文件 (.nmf)。从pepper_18 起,您可以为此使用tools/ 目录中的generate_nmf.py 脚本。如果您想从头开始编写,这些示例提供了使用 newlib 和 glibc(当前支持的两个标准 C 库)的示例。分别见hello_world_newlib/ 和hello_world_glibc/。
如果您以前没有使用过 gcc 系列编译器,那么查看 Makefile 中的一些示例以了解要使用的编译器和链接器标志也是一个好主意。建议从头开始同时编译 32 位和 64 位。
【讨论】:
最简单的方法是遵循https://developers.google.com/native-client/pepper18/quick-start 的快速入门文档,尤其是教程的第 5-7 步 (https://developers.google.com/native-client/pepper18/devguide/tutorial),这似乎是您要问的问题。
【讨论】: