2013-12-09 2 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를 참조하십시오.

관련 문제