c++ - 从零开始构建 Native Client 应用程序

标签 c++ scons google-nativeclient

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

最佳答案

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

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

如果您使用的是 pepper_16pepper_17,您会在 project_templates 中找到一个 Python 脚本 init_project.py > 在开发工具包中。它将设置一组完整的文件(.cc、.html、.nmf),其中的注释指示您需要在何处添加代码。运行 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 元素的简单页面。然后为 loadstartprogresserrorabortload 添加 JavaScript 事件处理程序>、loadendmessage 并让处理程序将事件数据写入例如 JavaScript 控制台,这样就可以判断 Native Client 模块出了什么问题没有加载。 load_progress 示例展示了如何执行此操作。

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

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

关于c++ - 从零开始构建 Native Client 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9712854/

相关文章:

c++ - 是否可以使用 gcov 测量函数覆盖率?

c++ - Visual Studio 为 chrono::duration 划分使用了错误的模板函数

c++ - 如何从一个函数返回不同的类?

c++ - 构建 .proto 并移动 .h

command-line-arguments - scons 将参数传递给特定步骤

native 客户端中的 SQLite

c++ - 解密字符串末尾需要 NULL 终止符是什么?

c++ - 为什么 C++ 使用 memset(addr,0,sizeof(T)) 来构造一个对象?标准错误还是编译器错误?

scons - 我可以使用 SCons 显示构建进度吗?

javascript - 是否可以通过pnacl加速webgl矩阵乘法?