如何将javascript代码编译为c++或java
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将javascript代码编译为c++或java相关的知识,希望对你有一定的参考价值。
参考技术A java是不能够编译C/C++文件的。他们原理完全不同。背后的运行机制也完全不一样。C/C++源文件只能够用C/C++的编译器来编译。
以GCC编译器为例,整个编译可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。本回答被提问者采纳
如何在包含第三方库的同时使用 emscripten 将 c++ 编译为 javascript?
【中文标题】如何在包含第三方库的同时使用 emscripten 将 c++ 编译为 javascript?【英文标题】:How to compile c++ to javascript using emscripten while including third party libraries? 【发布时间】:2015-05-19 14:56:21 【问题描述】:实际上,我在我的 c++ 程序中使用了 GSL。我参考了 emscripten 文档,但一无所获。这是我在文档中看到的,没有任何意义:
# For example, consider the case where a project “project” uses a library “libstuff”:
# Compile libstuff to bitcode
./emconfigure ./configure
./emmake make
# Compile project to bitcode
./emconfigure ./configure
./emmake make
# Compile the library and code together to HTML
emcc project.bc libstuff.bc -o final.html
(文档没有问题吗?) 它没有说明如何在 javascript 中使用该库。
这是我遇到的问题:
-
如何将第三方库构建成bitcode?li>
如何在javascript中使用该库?
提前致谢。
【问题讨论】:
您可以发布用于将程序编译成标准可执行文件的命令吗? 我认为不涉及任何可执行文件 我的意思是,如果您使用 GSL(例如 gcc)将程序构建为标准可执行文件,那么您会怎么做?我提出这个问题的目的是能够帮助将这些命令转换为使用 Emscripten 构建程序。 ... 或者,如果您可以发布您正在尝试编译的程序的一个非常小的缩减版本,(例如)只有一个仅调用一两个的main
函数来自 GSL 的函数,并将结果输出到标准输出,然后答案可以为您提供编译它的命令。
我刚刚意识到我可能误解了。你真的没有有你写的“C++程序”,但只是想从Javascript调用GSL函数?
【参考方案1】:
您需要访问第三方库的 C/C++ 源代码并使用 Emscripten 对其进行编译,然后才能在您的程序中链接它。
一旦你用 Emscripten 编译了第三方库,你现在可以静态链接它并在你的 C/C++ 程序中正常使用它,这也需要用 Emscripten 构建。
如果您没有自己的 C/C++ 程序,请将Emscripten 1.32.2 now supports building dynamic libraries 转换为您可以在网页上使用的 Javascript 模块。
【讨论】:
以上是关于如何将javascript代码编译为c++或java的主要内容,如果未能解决你的问题,请参考以下文章
Emscripten 将 C++ 编译为 JavaScript 和 Asm.js 的结果不佳