我从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:在搜索-ljvm时跳过不兼容的/usr/java/jdk1.6.0_21/jre/lib/amd64/server/libjvm.so
/ usr / bin / ld:找不到-ljvm
collect2:ld返回1退出状态
在哪里可以找到x86_64的JDK rpm?或者在其中安装libjvm.so的rpm /usr/java/jdk1.6.0_21/jre/lib/x86_64/server/libjvm.so?
谢谢,
答案 0 :(得分:1)
RPM没问题。
恕我直言,您检查了对libjvm.so路径的访问权限吗?它是当前用户的r-x吗?
你也可以尝试不混合“-L”和“-l”开关(在你的链接命令中任何-l之前都有-L)'因为gcc似乎不太喜欢这种混合。
答案 1 :(得分: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
。