【问题标题】:Is there any Java-based C/C++ compiler?是否有任何基于 Java 的 C/C++ 编译器?
【发布时间】:2013-03-31 08:15:09
【问题描述】:

我知道,即使它存在,它也比用本机代码编写并为具体拱形编译的编译器慢 N 倍。但无论如何。

主要目的是在android设备(arm/x86, linux-based os, dalvik jvm)上编译一些小的c/c++源文件。源代码可以在用户安卓设备上创建,编译器也可以在用户设备上运行。

有什么想法吗?

【问题讨论】:

  • 您不需要用 Java 编写的编译器。您需要一个将代码编译成 Java 字节码的编译器。这是两个不同的东西。
  • @AlexeyFrunze 我认为他的意思是在设备上编译文件,而不是在设备上运行。
  • @fbafelipe 其实你可能是对的!
  • 有一些编译器可以在 Android 上运行,但 AFAIC 的实现还远未完成,可能已经足够玩了。您最好的选择是获得一些“云”解决方案,它将为您进行远程编译并将结果发回给您。
  • 我的意思是我需要一个用 java 编写的编译器,它可以编译 c/c++ 源代码(让 AVR 更详细)

标签: android c++ linux compiler-construction dalvik


【解决方案1】:

如果您的目标是在 android 设备上编译 c/c++ 文件,如果您使用 NDK,您仍然可以使用用 C++ 编写的 C++ 编译器

【讨论】:

  • 在 linux 上使用 gcc 我不需要 NDK - 只需使用参数执行 gcc 进程。这是不受欢迎的,因为它需要 ROOT 权限并且它依赖于平台,因为 android 设备可以是 ARM 或 x86
  • 在设备上运行本机编译器不需要 root。但是对于您希望支持的不同平台,您需要多个版本。我认为这可能是您最好的选择。
  • 对不起,什么是原生编译器? ndk 编译器在开发人员机器上运行,然后编译的二进制文件只是复制到应用程序资源中。我需要在用户设备上编译源代码,因为可以编辑源代码。
  • @4ntoine 本地编译器是指以本地语言(在本例中为 C 或 C++)编译的编译器。想法是将 C++ 编译器移植到 NDK,这样您就可以在开发者计算机上编译 编译器代码,然后在设备上运行编译器,这样就可以编译其他源代码。
  • 哦,我没听懂。这可能是正确的方向:使用 ndk 编译 avr-gcc 使其在 android 设备上运行
【解决方案2】:

C4droid,它是Android 上的IDE 和C++ 编译器。一些插件使您能够使用库,例如​​ SDL,或使用 gcc。

如果您想编译非常小的源代码(1 个文件,没有自定义库),您可以使用 codepadliveworkspace 在您的智能手机上进行编码。该代码不会编译为可执行文件,您只会看到输出(错误、标准输出、...)。

【讨论】:

  • 感谢您的链接,我会尝试的。键盘和 liveworkspace 是在线工具,因此它们不适合。
【解决方案3】:

嗯,经过几周的研究,我可以说自然界没有这样的东西。对于 android,你应该使用原生编译器,但你会遇到很多兼容性问题,所以准备好应用补丁、捕获异常并深入研究数百兆字节的原生代码。

【讨论】:

    【解决方案4】:

    我看到了几种在您的 Android 设备上获取编译器的方法:

    Android 上的 Linux

    成熟的虚拟机

    编译到汇编和汇编

    从 C 源代码到汇编

    从汇编到原生代码

    编译成JVM字节码并解释

    从 C 源代码到 JVM 字节码

    JVM 的 JVM 解释器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多