gpt4 book ai didi

linux - 在 ubuntu 64 位上编译 32 位程序(libjvm.so 问题)

转载 作者:太空宇宙 更新时间:2023-11-04 11:20:55 27 4
gpt4 key购买 nike

已解决

我刚刚安装了“sudo apt-get install gcc-multilib”,它允许使用以下命令成功编译:

gcc -m32 -o invoke -I$JAVA_HOME/include -I$JAVA_HOME/include/linux cCode.c $JAVA_HOME/jre/lib/i386/server/libjvm.so

比你们都好!

这是可下载的源代码: http://cfile237.uf.daum.net/attach/247819495212DF1C07B9EB

嗯,首先,我的 ubuntu 是 64 位 12.04LTS。并且,我安装了最新的 jdk 1.7.0_25 的 64 位和 32 位版本。

我尝试在我的 64 位 Ubuntu 上使用 32 位库的 jdk 版本编译上面的源代码,它显示以下错误:

/usr/lib/jvm/jdk1.7.0_25_x86/jre/lib/i386/server/libjvm.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status

但是,如果我尝试使用 jdk 版本的 64 位库编译这些源代码,它编译得很好并且运行得很好。

如您所知,我的问题是如何在 64 位 Ubuntu 平台上使用 32 位版本的 jdk 库使其编译和运行良好?

啊,在我编译之前,我总是在终端上输入以下命令,

32位编译

export PATH=$PATH:/usr/lib/jvm/jdk1.7.0_25_x86/bin
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_25_x86
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/server

64位编译

export PATH=$PATH:/usr/lib/jvm/jdk1.7.0_25_x64/bin
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_25_x64
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server

最佳答案

首先,请注意 Java 程序本身不是 32 位或 64 位的。

无论您使用 32 位还是 64 位 JDK 编译代码,生成的 Java 字节码都将完全相同。使用 32 位 JDK 编译的代码将在 64 位 JRE 上运行,反之亦然。因此,您无需使用 32 位和 64 位 JDK 编译代码。

我不知道你的问题的确切原因,但你可能以某种方式混合了 32 位和 64 位 JDK 的部分,这将不起作用。

关于linux - 在 ubuntu 64 位上编译 32 位程序(libjvm.so 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18327531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com