来自java程序的C程序编译

我正在尝试从Linux平台上的java程序编译ac程序。 我的片段是。

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

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

子进程的默认工作目录是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 。