2012-10-31 4 views
2

나는 2 개 자바 파일gcj로 파일을 어떻게 개별적으로 컴파일 할 수 있습니까?

$의 GCJ --version GCJ (GCC) 3.4.4 (특수 cygming, DMD 0.125 사용 GDC 0.12) 저작권 (C) 2004 자유 소프트웨어를 컴파일 GCJ (Cygwin에서 버전) Foundation, Inc. 이것은 자유 소프트웨어입니다. 복사 조건에 대한 소스를 참조하십시오. 아무런 보증이 없습니다; 상품성 또는 특정 목적에의 적합성을 보장하지 않습니다.

$ 고양이 MyClass.java

public class MyClass { 
    public MyClass() { 
     System.out.println("Hello, MyClass"); 
    } 
} 

$ 고양이 HelloWorld.java

내가

로하여 HelloWorld의 코드를 실행할 수있어
public class HelloWorld { 
    public static void main(String[] args) { 
     MyClass myclass = new MyClass(); 
     System.out.println("Hello, World"); 
    } 
} 

에게 :

은 여기 내 2 개 자바 파일입니다

$ gcj.exe -o hello --main=HelloWorld --classpath=. HelloWorld.java MyClass.java 

그때

gcj.exe -C MyClass.java 

gcj.exe --main=HelloWorld --classpath=. HelloWorld.java 

문제처럼 separatly을 컴파일하고 싶은 것은 내가 연계 모델은 기본적으로

/tmp/ccKwa7F4.o: In function '_ZN10HelloWorld4mainEP6JArrayIPN4java4lang6StringEE': 
/home/lucm/HelloWorld.java:3: undefined reference to `MyClass::class$' 
/home/lucm/HelloWorld.java:3: undefined reference to `MyClass::MyClass()' 
collect2: ld returned 1 exit status 
+0

이 쓸모없는 장난감의 사용을 중단하고 실제 버전의 Java를 사용하기를 강력히 권장합니다. – EJP

답변

3

.O하는 컴파일 얻을 수 있다는 점이다 C- 처럼. 모든 파일을 컴파일해야합니다.

gcj -c MyClass.java 
gcj -c HelloWorld.java 
gcj --main=HelloWorld MyClass.o HelloWorld.o 

은 바이너리 호환성 ABI가 도입 된 GCJ 이후 버전,이 규칙에 예외가 있습니다 : 그래서 당신이해야 할 것은 결과를 .o 인 각 컴파일 및 링크입니다. 위의 내용이 작동하게하는 가장 기본적인 방법입니다.