首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gcj单独编译文件?

如何使用gcj单独编译文件?
EN

Stack Overflow用户
提问于 2012-11-01 03:57:49
回答 1查看 997关注 0票数 2

我用gcj (Cygwin版本)编译了2个java文件。

$ gcj --版本gcj (GCC) 3.4.4 (cygming special,GDC0.12,使用dmd 0.125)版权所有(C) 2004 Free Software Foundation,Inc.这是自由软件;请参阅复制条件的源代码。没有任何保证;即使是适销性或对特定目的的适用性也没有。

下面是我的两个java文件:

$ cat MyClass.java

代码语言:javascript
复制
public class MyClass {  
   public MyClass() {  
      System.out.println("Hello, MyClass");  
   }  
} 

$ cat HelloWorld.java

代码语言:javascript
复制
public class HelloWorld {  
   public static void main(String[] args) {  
      MyClass myclass = new MyClass();  
      System.out.println("Hello, World");  
   }   
}

我可以用HelloWorld来执行代码

代码语言:javascript
复制
$ gcj.exe -o hello --main=HelloWorld --classpath=. HelloWorld.java MyClass.java

我想单独编译它们,如下所示

代码语言:javascript
复制
gcj.exe -C MyClass.java

然后

代码语言:javascript
复制
gcj.exe  --main=HelloWorld --classpath=. HelloWorld.java

问题是我得到了

代码语言:javascript
复制
/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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-02 03:21:26

当编译到.o时,链接模型基本上类似于C。你必须编译所有的文件。因此,您要做的就是将每个结果编译为.o并将结果链接起来:

代码语言:javascript
复制
gcj -c MyClass.java
gcj -c HelloWorld.java
gcj --main=HelloWorld MyClass.o HelloWorld.o

当引入二进制兼容性ABI时,在gcj的更高版本中有一些例外。以上是让它工作的最基本的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13166532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档