2013-12-09 114 views
3

我想从Linux平台上的java程序编译一个c程序。我的片段是。从java程序编译C程序

  ProcessBuilder processBuilder = new ProcessBuilder("/usr/bin/gcc", 
      "-c","/hipad/UserProject/example.c"); 

      Process proc = processBuilder.start(); 

编译java程序时没有错误,但我无法获取.o文件。我试图找出解决方案,但没有人工作。 任何建议.....

+1

当你使用相同的选项手动编译c程序时,它工作正常吗? – slayedbylucifer

+0

.o文件可能出现在当前的工作目录中,无论它是什么。 – hyde

+0

我可以看到你正在使用* nix机器吗?我注意到,提供文件的整个文件路径将有助于大多数情况..... – user2277872

回答

3

子进程的默认工作目录是Java进程作为工作目录的目录,它通常是从其启动的目录。默认gcc将输出文件写入当前工作目录。那就是你应该找到的地方example.o

有两种简单的方法可以解决这个问题。你可以给GCC-o选项和完整路径和所需的输出文件的名称,或者您可以设置工作子进程的目录,如:

ProcessBuilder processBuilder = 
    new ProcessBuilder("/usr/bin/gcc", "-c","example.c"); // source in working dir 
processBuilder.directory(new File ("/hipad/UserProject")); // or whatever 
Process proc = processBuilder.start(); 

更多信息,请参见ProcessBuilder javadoc