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

cha*_*adb 3 c++ scons google-nativeclient

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

Wes*_*9th 7

根据您要使用的SDK版本,您有几个选项.

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

如果你正在使用pepper_16或者pepper_17,你会发现一个Python脚本init_project.pyproject_templatesSDK中.它将设置一整套文件(.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_glibc或者hello_world_newlib用于C或hello_world_interactiveC++)并将其用作起点.

从头开始写作

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

在HTML端,编写一个包含EMBEDNative Client模块元素的简单页面.然后添加JavaScript事件处理程序loadstart,progress,error,abort,load,loadend,和message和有处理程序将事件写入数据,例如JavaScript控制台,以便它可以告诉哪里出了问题,如果本机客户端模块没有加载.该load_progress示例显示了如何执行此操作.

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

如果您之前没有使用过gcc-family编译器,那么查看一些示例的Makefile也是个好主意,以查看要使用的编译器和链接器标志.建议从一开始就编译32位和64位.