【发布时间】:2012-09-24 23:35:37
【问题描述】:
我正在研究构建一个系统的可能性,当查询到达服务器时,我们将查询转换为 C++ 代码,将其编译为共享对象并运行代码。
编译本身的时间需要很短才值得。我的代码可以生成相应的 c++ 代码,但如果我必须将其写在磁盘上,然后调用 gcc 以获取 .so 文件然后运行它,这似乎不值得。
有没有办法让我获得一小段代码来编译并快速准备好作为共享对象(在查询到达之前可能需要很长的启动时间)。如果这样的工具有一个许可许可证,那就再好不过了。
编辑:我有一种用户可以使用的非常严格的查询语言,因此安全威胁无关紧要。我自己的代码将查询转换为 C++ 代码。提到clang的答案是完美的。
【问题讨论】:
-
“一个查询访问服务器,我们将查询转换为 c++ 代码,将其编译为共享对象并运行代码”——我敢打赌,不到一个小时,有人会在你的服务器上获得 root 权限。
-
@H2CO3:如果输入受到约束,则生成的 C++ 是所有可能的 C++ 程序的有限子集。通过合理的约束,您可以解决停机问题等。
-
对这个问题的结束有点恼火。我在要求一个特定的工具/库,它可以在运行时编译代码并快速完成。为什么要讨论!
标签: c++ compiler-construction jit