c++ - 在 Google Native Client 中使用 C++ 库

标签 c++ google-nativeclient

我是 Native Client 的新手,不幸的是我对“制作”、编译等也很缺乏经验,所以我希望你能给我一些关于如何处理我的问题的基本信息 问题。

所以我想要完成的是编译一个 C++ 库,以便在 NaCl 应用程序中使用它。

首先,我的应用程序基于 Pepper 提供的示例,我使用附带的“make.bat”对其进行简单编译。

然后我下载了库的源代码,其中包含“config”和“src”等文件夹,所以首先我必须调用“configure”、“make”、“make install”。但我想让库使用那个“make.bat”进行编译,所以我想我必须将库的复杂配置/Makefile 脚本附加到我的 NaCl 应用程序的 Makefile 中?
怎么办?
我在哪里可以找到有用的信息和/或帮助?

谢谢!

最佳答案

您可以查看nacl ports项目以查看如何将库移植到 NaCl。 NaCl ports 在 Linux 平台上效果最好,所以你最好有一个虚拟机或者直接在它上面工作。

移植库还有一个技巧。人们围绕编译器和链接器创建包装器脚本。这些包装器脚本调用 nacl 编译器和链接器,但它们还创建了一个 shell 脚本,该脚本使用 sel_ldr 调用生成的 NaCl 可执行文件。返回此脚本而不是可执行文件(这是仅限 Linux 的技巧)。这样 configure 和 make 就可以执行 NaCl 代码而不会怀疑任何事情。所以可以使用正常的配置/制作过程,我们只需要为这些包装脚本设置编译器和链接器。

由于您可能不会自己开发库,因此最好编译一次,然后在您的 makefile 中使用它。添加带有库名称的 -l 选项和带有库目录路径的 -L 选项。您可以在示例生成文件中为这些选项使用 GLIBC_LDFLAGS 变量。

关于c++ - 在 Google Native Client 中使用 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768483/

相关文章:

c++ - 如何使用 splice() 在 C++ 中重组列表列表

c++ - 访问 dlopen 标志

c++ - 如何在仍然允许 ADL 等的情况下调用同名的其他函数

javascript - 如何将 chrome.tabCapture 流从 js 传递到 c++ PNACL native 代码

opencv - 谷歌本地客户端(NaCl、PNaCl)中的英特尔线程构建 block (TBB)

google-nativeclient - 我可以在浏览器之外运行 Google 的 Native Client 吗?

c++ - 将 Rcpp 对象分配到 Rcpp 列表中会产生最后一个元素的拷贝

c++ - <c____> 头文件中声明的 C 函数是否保证在全局命名空间和 std 中?

google-chrome-extension - 使用 NaCL 和外部库的 Google Chrome 扩展

compiler-errors - native 客户端-如何使用GetTime?