首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCJ创建重复的虚拟符号

GCJ创建重复的虚拟符号
EN

Stack Overflow用户
提问于 2010-04-02 22:42:55
回答 4查看 1.8K关注 0票数 4

我试图用gcj构建一个java应用程序,但是得到了下面的错误。我已经有一段时间没有使用gcj了(一年左右),所以我可能忘记了一些不明显的东西,但我很确定我一直都是这样做的。

代码语言:javascript
复制
 multiple definition of `java resource .dummy'

gcj版本在Ubuntu上是4.4.1,在cygwin/windows XP上是4.3.4,我正在用

代码语言:javascript
复制
  gcj --main=my.MainClass --classpath=my my/*java

任何人在没有安装早期版本的gcj的情况下都会看到或知道解决方法。如果是这样做的话,有没有人知道如何在cygwin上做到这一点,或者我必须构建它?

以下是产生此错误的最小测试用例

代码语言:javascript
复制
public class A {
    public static void main(String[] args) {
        System.out.println(new B());
    }
}

public class B {
    public String toString() {
        return "Hello";
    }
}

gcj --main=A src/A.java src/B.java
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-02 23:32:47

针对此4214343302提交了2个错误

唯一报道的解决方案是编译成类文件,然后链接类文件。

以下代码不会产生任何错误:

代码语言:javascript
复制
gcj -I src -C src/A.java src/B.java
gcj -I src --main=A src/A.class src/B/class
票数 5
EN

Stack Overflow用户

发布于 2010-04-26 12:12:57

如果您是通过使用gcj -c将.java文件编译为.o文件来构建的,则还可以通过使用objcopy将虚拟符号设为本地符号来修复此问题:

代码语言:javascript
复制
objcopy -L '_ZGr8_$_dummy' A.o

这对于Makefile很有效--只需添加到%.o: %.java规则:

代码语言:javascript
复制
objcopy -L '_ZGr8_$$_dummy' $@    
票数 3
EN

Stack Overflow用户

发布于 2011-12-13 05:03:02

至少在某些版本的gcj中,使用-o显式指定输出可执行文件将使其正常工作:

java gcj --main=my.MainClass -o myexe --classpath=my my/*

不过,我对这种行为没有任何解释。

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

https://stackoverflow.com/questions/2567230

复制
相关文章

相似问题

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