如何从Java调用Cygwin C编译器GCC?

如何从Java调用Cygwin C编译器GCC?,java,gcc,compiler-construction,cygwin,Java,Gcc,Compiler Construction,Cygwin,我试图通过调用Cygwin的gcc或gcc-4从Java编译一个C文件,但我尝试的似乎都不起作用。我尝试的是以下代码行: theProcess = Runtime.getRuntime().exec("cmd /c C:/cygwin/bin/gcc-4.exe -o C:/work/source.exe C:/work/source.c"); 但是,它没有输出任何内容。为了完全理解这一点,我需要在这句话之后了解更多关于过程的操作。但是只要调用“exec”就不会向Std输出输出任何内容,如果这

我试图通过调用Cygwin的gcc或gcc-4从Java编译一个C文件,但我尝试的似乎都不起作用。我尝试的是以下代码行:

theProcess = Runtime.getRuntime().exec("cmd /c C:/cygwin/bin/gcc-4.exe -o C:/work/source.exe C:/work/source.c");

但是,它没有输出任何内容。

为了完全理解这一点,我需要在这句话之后了解更多关于
过程的操作。但是只要调用“exec”就不会向Std输出输出任何内容,如果这是您所期望的。在某些情况下,如果不使用命令的输出,则命令根本不会执行。也就是说,您需要从创建的
进程
对象读取输出。试着这样做:

BufferedReader br = new BufferedReader (new InputStreamReader (theProcess.getInputStream());
String line = br.readLine();
while (line != null) {
    System.out.println(line);
    line = br.readLine();
}

这将把进程的标准输出打印到JVM的标准输出。

返回的代码是什么?你试过读取错误流和输出流吗?为什么?为什么不直接运行gcc.exe呢?您不需要调用cmd.exe,因为Cygwin程序是“Windows兼容”的,所以您可以直接调用它们。也许您希望运行
bash
而不是
cmd