【问题标题】:fast on-demand c++ compilation [closed]快速按需c ++编译[关闭]
【发布时间】:2012-09-24 23:35:37
【问题描述】:

我正在研究构建一个系统的可能性,当查询到达服务器时,我们将查询转换为 C++ 代码,将其编译为共享对象并运行代码。

编译本身的时间需要很短才值得。我的代码可以生成相应的 c++ 代码,但如果我必须将其写在磁盘上,然后调用 gcc 以获取 .so 文件然后运行它,这似乎不值得。

有没有办法让我获得一小段代码来编译并快速准备好作为共享对象(在查询到达之前可能需要很长的启动时间)。如果这样的工具有一个许可许可证,那就再好不过了。

编辑:我有一种用户可以使用的非常严格的查询语言,因此安全威胁无关紧要。我自己的代码将查询转换为 C++ 代码。提到clang的答案是完美的。

【问题讨论】:

  • “一个查询访问服务器,我们将查询转换为 c++ 代码,将其编译为共享对象并运行代码”——我敢打赌,不到一个小时,有人会在你的服务器上获得 root 权限。
  • @H2CO3:如果输入受到约束,则生成的 C++ 是所有可能的 C++ 程序的有限子集。通过合理的约束,您可以解决停机问题等。
  • 对这个问题的结束有点恼火。我在要求一个特定的工具/库,它可以在运行时编译代码并快速完成。为什么要讨论!

标签: c++ compiler-construction jit


【解决方案1】:

在 JIT 模式下运行 Clang 应该可以提供您需要的速度,可以找到示例 here,另一方面,安全是另一回事...

Ch 还添加了 JIT,并将其视为解释器,它可能提供更简单的沙盒/受控环境。

【讨论】:

    【解决方案2】:

    除了 Necrolis 答案之外,还有专门的 C++ 解析器 Cling。可能会派上用场。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多