我正在阅读 Clang 和 Ch(c++ 解释器),但我不清楚,是否可以在没有任何安装的情况下运行新生成的 .cpp 文件?因为我需要在任何电脑上运行最终程序...
附言。如果是的话,有没有人有一个很好的例子,在 C++ 代码中执行 .cpp 文件?
我正在阅读 Clang 和 Ch(c++ 解释器),但我不清楚,是否可以在没有任何安装的情况下运行新生成的 .cpp 文件?因为我需要在任何电脑上运行最终程序...
附言。如果是的话,有没有人有一个很好的例子,在 C++ 代码中执行 .cpp 文件?
这可能是不可能的,或者至少非常困难。你必须在你的程序中包含整个编译器(包括链接器、汇编器、优化器、预处理器……),这会使它变得非常大。
一种方法是使用 Clang(正如您已经指出的那样),源代码中甚至还有一个名为“Clang 解释器”的演示项目:http: //llvm.org/viewvc/llvm-project/cfe/trunk/examples/铿锵翻译/
但是,我曾经尝试将这个“野兽”编译到我的程序中并中途放弃,因为结果二进制文件(或带有外部库的二进制文件)的文件大小达到了几十兆字节(甚至可能是一百)。
我的建议是生成一个可以轻松解释的不同脚本(例如 bash/sh 脚本,您可以在任何 unix 机器上执行该脚本)。
据我所知,这是不可能的,因为一个CPP文件的编译过程是这样的——
预处理:预处理器获取一个 C++ 源代码文件并处理#include
s、#define
s 和其他预处理器指令。此步骤的输出是没有预处理器指令的“纯”C++ 文件。
编译:编译器获取预处理器的输出并从中生成一个目标文件。
链接:链接器获取编译器生成的目标文件并生成库或可执行文件。
所以,应该有中间文件和可执行文件。
更多可以在这里找到-
有点取决于你所说的“安装”是什么意思。
是的,您可以使用完整的编译器分发您的程序,编译源代码,然后执行最终结果(全部来自原始 exe)。