我有一个用于屏幕共享的NPAPI插件。
为此,我使用zlib,jpeg,tight-vnc库以及由我开发的库(比如libX)。
现在我希望将它移植到NaCl。
libX的结构如下:
/X/commonfiles
/X/win/*.cpp *.h
/X/linux/*.cpp *.h
/X/mac/*.cpp *.h *.mm
这些目录包含特定于平台的cpp文件。
我根据平台使用makefile编译它们。
但我无法理解NaCl工具链如何从我的库/代码生成一个nexe或pexe。
是否有我们必须考虑的makefile或我遗失的任何其他东西。
请帮助!
感谢!!!
答案 0 :(得分:0)
首先,NaCl是一种沙盒技术,可在浏览器中运行本机代码时提供安全性。因此,您将无法直接访问用户的文件系统(就像您可以使用NPAPI插件一样)。您可能需要修改库以支持NaCl作为新的“操作系统”。
也就是说,Pepper Plugin API (PPAPI)提供了许多功能,允许你的NaCl插件与浏览器通信。此外,NaCl SDK附带的nacl_io
库提供了更为熟悉的POSIX类接口,以支持文件I / O和套接字。
使用pnacl工具链尝试构建库不应该太难,如下所示:
下载Native Client SDK。完成后,您应该有一个名为pepper_31
的目录,其中包含Native Client SDK。
Native Client构建可能与您的Linux端口最相似。在您的makefile中,更改执行本机工具链的任何构建规则,以改为使用pnacl工具链,例如。
g++
=> pepper_31/toolchain/linux_pnacl/bin/pnacl-clang++
ar
=> pepper_31/toolchain/linux_pnacl/bin/pnacl-ar
尝试构建Linux版本。您可能会有一些编译失败,可能来自缺少的库,可能来自标头差异。根据您的库的功能,您可能需要修改它以使用PPAPI来访问图形,套接字,URL请求,文件IO等内容。
执行此操作后,您可能会遇到有关如何实施所需功能的更具体问题。 :)