如何使用emcc链接从cpp文件编译的.bc文件和子弹库?

时间:2017-12-18 21:29:25

标签: javascript c++ emscripten ammo.js

根据ammo.js的文档,它说:

  

最直接的事情是如果你想用C ++编写代码,并在网上运行它。如果是这样,那么将代码编译成LLVM,将其与bullet链接,然后使用emscripten将其编译为JavaScript。(链接它的最简单方法是将.bc文件添加到make.py中的llvm-link命令。)< / p>

那么如何将以C ++编写的代码编译成LLVM bitcode,链接并在网上运行呢? BulletHelloWorld example

如何在make.py中链接它?是否有必要始终使用ammo.idl文件,即使我想编译特定程序而不想将整个项目库公开给JavaScript? Link to make.py

1 个答案:

答案 0 :(得分:1)

让我们从基础开始。如果您不了解make和cmake,请在继续之前进行研究。

首先,您需要从源代码构建Bullet库,以便在Web上使用它。从我所看到的,你需要传入标志来构建它独立于python。研究这些标志,看看你需要什么。

Bullet库正在使用cmake来生成构建文件 - 所以首先从cmake中获取一个makefile然后你可以“emcc make”生成的makefile。

此步骤的输出即.bc文件,将“链接”到下一步的输出。

现在要编译的example.cpp取决于Bullet库的一些标题。因此,在编译main.cpp文件时,您需要将em ++二进制文件传递给这些头文件。这个曾经编译过的应该生成你的main.bc

现在你需要再次调用em ++,但是使用main.bc和上一步的.bc作为参数,并提供所需的输出文件,即js / html。在某种意义上,我们现在链接所有“.bc”文件以生成js / html。

请注意一些丢失的符号“警告”,因为这可能意味着您的代码无法运行。

顺便说一句,所有这些都可以在官方的emscripten网站上找到,所以你应该参考它,这很麻烦。