1

我从 Sun 下载了 jdk-6u21-linux-x64-rpm.bin 并安装了 Java。在执行期间,提取的 rpm 是 jdk-6u21-linux-amd64.rpm。

我正在尝试构建一个需要 libjvm.so 的应用程序。在上面的 JDK 中,它位于 /usr/java/jdk1.6.0_21/jre/lib/amd64/server/libjvm.so 结果,我收到如下编译错误:

-lpegcommon -L/usr/java/jdk1.6.0_21/jre/lib/amd64/server -ljvm -ldl -lpthread -lcrypt
/usr/bin/ld: 跳过不兼容的/usr/java/jdk1.6.0_21/jre/ lib/amd64/server/libjvm.so 搜索时 -ljvm
/usr/bin/ld: 找不到 -ljvm
collect2: ld 返回 1 退出状态

我在哪里可以找到 x86_64 的 JDK rpm?还是 libjvm.so 安装在
/usr/java/jdk1.6.0_21/jre/lib/x86_64/server/libjvm.so 中的 rpm?

谢谢,

4

2 回答 2

1

RPM 没问题。

恕我直言,您是否检查了对包含 libjvm.so 的路径的访问权限?是当前用户的 rx 吗?

您也可以尝试不混合“-L”和“-l”开关(在链接命令中的任何-l之前都有所有-L)因为gcc似乎不太喜欢这种混合。

于 2010-09-06T17:24:30.440 回答
0

由于最终它是您要安装的 rpm,因此您可以将 rpm 的内容重新定位到任何您想要的位置。

列出 RPM: 的内容rpm -qpl jdk-6u21-linux-amd64.rpm,然后为每个基本目录(/etc、/usr、\etc、\etc)使用重定位语句。假设 RPM 包含 /etc 和 /usr/sbin 中的文件,然后将 /usr/sbin 重新定位到 /usr/local/sbin,您将使用rpm -i --relocate /usr/sbin=/usr/local/sbin jdk-6u21-linux-amd64.rpm.

于 2010-09-06T11:37:24.180 回答