2013-12-09 113 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