2012-03-07 48 views
3

我想通过调用Cygwin的gcc或gcc-4从Java编译C文件,但没有任何我尝试似乎工作。我正在尝试的是以下代码行:如何从Java调用Cygwin C编译器GCC?

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

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

+1

返回的代码是什么?你有没有试过阅读err流和out流? – 2012-03-07 21:19:49

+0

为什么cmd?为什么不直接运行gcc.exe? – bmargulies 2012-03-07 21:20:58

+1

你不需要调用cmd.exe Cygwin程序是'Windows兼容的',所以你可以直接给它们打电话。 – anakkin 2012-03-07 21:38:19

回答

1

为了充分理解这一点,我需要了解更多关于theProcess之后你在做什么。但是简单地调用“exec”将不会输出任何东西给Std输出,如果这是你所期望的。在某些情况下,如果它们的输出没有被消耗,命令根本不会执行。这就是说,您需要读取已创建的Process对象的输出。试试这样的:

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

这将打印输出从标准输出到JVM的标准输出。