【问题标题】:No output file created when compiled with gcc使用 gcc 编译时未创建输出文件
【发布时间】:2012-06-28 08:42:37
【问题描述】:

在 Java Source 中调用 gcc 编译器来编译 C 文件。

  List<String> command = new ArrayList<String>();
  String fs = System.getProperty("file.separator");
  command.add("C:\\cygwin" + fs + "bin" + fs + "sh");
  command.add("-c");
  command.add("/usr/bin/gcc /cygdrive/d/WorkSpace/TEST/HelloWorld.c -o /cygdrive/d/WorkSpace/HHH");
  ProcessBuilder builder = new ProcessBuilder(command);
  final Process process = builder.start();

HHH.exe 未创建。有人能解释一下这段代码有什么问题吗?

【问题讨论】:

  • 将输出重定向到 Stream 并尝试打印。输出流流 = process.getOutputStream();使用流来读取实际发生的情况。
  • 我做到了。我使用 process.getInputStream() 将输出写入控制台。但什么也没有出现。
  • 先执行命令看看。检查是否,即使直接执行在 shell 中也没有显示任何内容。
  • 你以后会打电话给process.waitFor()吗?也许您的 Java 应用程序在 gcc 完成其工作之前就已经存在,从而杀死了它。
  • 在单元格中直接执行命令成功输出HHH.exe....调用process.waitFor()也没有做任何改变。

标签: java bash gcc compilation cygwin


【解决方案1】:

您需要将字符串“cmd”和“/c”设置为命令列表中的前两个元素。从 Java 调用任何命令行进程时,这是必需的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2021-06-28
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多