Ubuntu 16.04源码编译Scilab时configure报错:无法检测Java共享库位置
解决Ubuntu 16.04编译Scilab时Java共享库检测失败的问题
我之前在Ubuntu 16.04上编译Scilab的时候也碰到过一模一样的错误,折腾了好一会儿才搞定,给你几个针对性的解决方案:
1. 先确认Java环境的有效性
首先得确保你的Java版本和路径是Scilab能识别的:
- 检查当前Java和编译器版本:
Scilab对Java版本比较挑剔,Ubuntu 16.04上推荐用OpenJDK 8(高版本Java可能会导致检测失败),如果你的版本不对,先安装切换:java -version javac -versionsudo apt-get install openjdk-8-jdk openjdk-8-jre-headless sudo update-alternatives --config java sudo update-alternatives --config javac - 找到
libjvm.so的具体位置:
通常路径是find /usr/lib -name libjvm.so/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so - 确认LD_LIBRARY_PATH包含这个路径:
如果没看到上面的路径,临时设置(也可以加到echo $LD_LIBRARY_PATH~/.bashrc里永久生效):
设置完后重新运行export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server:$LD_LIBRARY_PATH./configure试试。
2. 手动给configure指定Java路径
有时候自动检测会失效,直接告诉configure你的JDK位置:
./configure --with-java=/usr/lib/jvm/java-8-openjdk-amd64
如果还是不行,再加个参数指定javac的路径:
./configure --with-java=/usr/lib/jvm/java-8-openjdk-amd64 --with-javac=/usr/lib/jvm/java-8-openjdk-amd64/bin/javac
注意运行前先清理之前的configure缓存,避免旧配置干扰:
rm -rf config.log config.cache
3. 修改java.m4文件适配你的JVM
错误提示提到需要更新java.m4,那我们直接修改这个文件:
- 找到Scilab源码里的
java.m4,通常在scilab/m4/目录下 - 打开文件后搜索
libjvm,找到检测共享库的代码块,把你找到的libjvm.so所在路径添加到检测列表里 - 比如,在类似
AC_SEARCH_LIBS([JNI_CreateJavaVM], [jvm], [...], [...])的部分,加上你的路径作为搜索路径
如果嫌手动改麻烦,也可以找一个Scilab稳定版的最新java.m4文件替换掉当前的,旧版本的java.m4对Ubuntu 16.04的OpenJDK支持确实有问题。
4. 最后再检查一次依赖
虽然你说已经满足所有依赖,但还是确认下有没有漏装Java相关的开发包:
sudo apt-get install libjna-java libjna-jni
内容的提问来源于stack exchange,提问作者randomGuy
相关产品推荐
相关产品推荐

