- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
是否正确,从 pepper 18 开始,我不需要 scons 构建系统来编译,而是使用 gcc(nacl-versions)和 makefiles?
此外,生成的 .nexe 文件将在任何平台网络服务器上运行,而不仅仅是在编译它的平台上,这是否正确?所以比如在mac os下开发编译native code模块,生成32bit和64bit的nexe文件。我将加载此模块的 Web 服务器在 Linux 上运行,并且仍会执行 32 位和 64 位版本的模块?
最佳答案
为 Native Client 构建系统
没有任何版本的 Native Client SDK 要求特定的构建系统;任何时候都可以使用 SCons、GNU Make、CMake,甚至只是 shell 脚本。换句话说,基于 gcc 和 GNU 工具链的编译器和工具独立于开发人员决定使用的构建系统。
但是,在 Native Client SDK 的 Pepper 版本 17 之前,SDK 中的示例附带了 SCons 的构建文件,并且 SCons 包含在 SDK 中。从 Pepper 18 开始,情况不再如此。相反,为示例提供的构建文件是用于 GNU Make 的 Makefile。
另见 release notes适用于 Pepper 18 版本的 SDK。
交叉编译
SDK中提供的工具目前支持32位x86和64位x86架构。 Web 服务器的平台并不重要,因为 Native Client 模块运行在客户端(即浏览器中)。这意味着需要考虑两个系统:用户系统和开发者系统。
在用户系统上,当 Chrome 在页面中遇到 Native Client 模块时,它会获取适用于该客户端浏览器的可执行文件(.nexe 文件)。因此,如果 64 位 Windows 用户访问该页面,将获取 64 位二进制文件;如果用户使用的是 32 位 Mac,则获取 32 位二进制文件。也有异常(exception),我将在下面单独处理。 Chrome 从 list 文件中确定 32 位和 64 位 .nexe 的名称。有关 a description and an example of a manifest file 的信息,请参见 Native Client SDK 站点 (www.GoNaCl.com)
无论用于开发的操作系统和架构如何,开发人员都可以——也应该——生成 32 位和 64 位可执行文件。在 Pepper 18 的 examples/目录中运行“make”并查看发出的命令是了解如何执行此操作的便捷方式。例如,“make hello_world_glibc”输出的一部分内容如下:
i686-nacl-gcc -o hello_world_x86_32.nexe hello_world.c -m32 -O0 -g -pthread -O0 -g -Wno-long-long -Wall -lppapi
和
i686-nacl-gcc -o hello_world_x86_64.nexe hello_world.c -m64 -O0 -g -pthread -O0 -g -Wno-long-long -Wall -lppapi
第一行生成 32 位 .nexe;第二行生成 64 位 .nexe。重要的标志是 -m32/-m64,它指定架构 - 始终构建两者,以便客户端在 32 位和 64 位机器上都可以使用该应用程序。
从长远来看,将只需要一种部署格式,并将 ARM 作为直接支持的架构添加。查看Portable Native Client项目详情。
这里是浏览器和客户端架构对32/64位的具体匹配:
因此,作为一般规则,Chrome 会获取与其自身位龄相匹配的 .nexe——除了在 64 位 Windows 上,Chrome 会获取 64 位 .nexe,尽管它本身是 32 位的。
关于c++ - 关于google-nacl的非常简单的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10204503/
我有大量已移植到 NaCl 的现有 BSD 套接字代码。我能够构建、链接和运行此代码,但是一旦到达套接字代码,NaCl 模块就会崩溃。 我现在使用 nacl_io ,但是当我尝试调用 TCP 连接函数
我想开始使用 NaCl/Pepper 进行开发,并且我的构建环境运行良好,但我似乎无法在我的浏览器中使用任何示例。 我已经启用了 Native Client、调试等。但是似乎没有一个模块触发“已加载”
我有一个在 linux 共享内存 (/dev/shm/datahere) 中写入一些日期的应用程序。我需要使用谷歌本地客户端在浏览器中显示这些数据。是真的?我该怎么做? 最佳答案 我不得不在网上挖漂亮
我正在寻找用于实现加密系统的库,并且对使用 NaCl:网络和密码学库特别是 box function 感兴趣。 .显然,它使用对称加密 XSalsa20、用于公私加密的 Curve25519 和用于身
我正在尝试让一个简单的命令行应用程序在 NaCl Development Environment 中运行.但是我不明白为什么它不想打开文件: #include #include int my_ma
我想使用 openssl我的 NaCl 模块中的库。幸运的是它已经被移植了,如https://code.google.com/p/naclports/ .然而,有点遗憾,但我不知道如何将库添加到工具链
我不知道这是否属于该网站处理的后果,但我想知道是否有办法将 nacl 安装到 Chrome 上,因为它已从 ubuntu 的 Chrome 存储库中删除 最佳答案 这取决于 Ubuntu 维护者如何编
既然 nacl 即将在 chrome 中默认启用,我想尝试编写一个 opengl 游戏。这似乎是可能的,因为有一个工作中的地震端口,但我找不到任何关于此的文档。有没有人有一个最小的例子? 额外的问题:
鉴于 Go NaCl 库 ( https://github.com/golang/crypto/tree/master/nacl/sign ) 的签名功能,如何对文件进行签名,尤其是超过 1GB 的超
我正在尝试安装 Chrome 原生客户端。 我去了https://developer.chrome.com/native-client/sdk/download页面下载和安装 sdk。我按照此页面中的
在 Google 的 NaCl( native 客户端)SDK 中有 sel_ldr.py(安全 Sprite 加载程序),它允许用户运行创建的 NaCl 可执行文件 (.nexe)通过 NaCl 或
我正在尝试将 FFmpeg 移植到我的 NaCl 模块中。 到目前为止,我的模块链接了 ffmpeg 和 SDL 库。 它已经可以播放 YUV 格式的视频,直接加载到内存并复制到 YUVOverlay
有没有人成功地在 CEF3( Chrome 嵌入式框架)中启用 NaCl/PNaCl 支持? 我发现 Chrome (34) 可以在 this page 上运行 PNaCl 样本很好,但是在 cefb
我刚刚开始研究 NaCl,希望能够制作音频浏览器扩展。文档中有一个正弦波演示,因此制作合成器似乎很简单。 我很想知道是否可以在输出之前捕获浏览器音频流,以便可以应用实时效果。这可能吗? 最佳答案 不仅
:)嗯,我有 NPAPI 插件,我需要将其转换为 Native Client (NACL)。我有所有 C/C++ 代码,但它不是我编写的。所以我只是 C/C++ 插件的初学者。我一直在阅读有关 NAC
我刚刚尝试了 NaCl 网站上的 Xsalsa20 代码。我无法编译它。 #include "build/BlackDragon/include/x86/crypto_stream.h" #inc
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我打算使用网络摄像头捕获视频,然后使用 opencv 对其进行处理,最后在网页上显示输出 google native-client 环境中的 opencv-naclport 我目前知道的方式是 使用
由于 Google NaCl 是 C++,我能否以某种方式访问文件系统?如果我要创建游戏或桌面应用程序,那是非常需要的。 最佳答案 由于安全限制,NaCl 不允许您打开磁盘上的任何文件夹。 但是,
我有一个网站和一个 Google Chrome 扩展程序。该扩展使用 NaCl API (JavaScript) 从用户计算机写入/读取文件 (C++)。 我的问题是:我能否在我的网站中加载我的扩展程
我是一名优秀的程序员,十分优秀!