安装Python版Lucene遇阻:编译jcc的setup.py时出现ld错误
解决jcc编译时
ld: library not found for -ljava的问题 这个坑我踩过好几次,本质就是编译脚本没法自动找到Java的核心库文件,得手动把Java的安装路径明确告诉jcc的setup.py。下面分不同操作系统给你具体的解决步骤:
macOS环境下的解法
先定位你的Java JDK安装路径,打开终端执行:
/usr/libexec/java_home会输出类似
/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home的路径,把这个路径记下来。用这个路径编译jcc,执行以下命令(把路径替换成你自己的):
python setup.py build --java-home /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home --include-dirs /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/include /Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/Home/include/darwin如果是Python3,把命令里的
python换成python3即可。
Linux环境下的解法(以Ubuntu/CentOS为例)
先确认Java JDK的路径,执行以下命令查看:
update-alternatives --config java或者如果已经设置了
JAVA_HOME环境变量,直接用echo $JAVA_HOME查看。如果没设置,先临时导出:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 替换成你的JDK路径编译jcc时指定路径:
python setup.py build --java-home $JAVA_HOME --include-dirs $JAVA_HOME/include $JAVA_HOME/include/linux要是还是报错,可以先临时设置动态链接库路径再编译:
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server:$LD_LIBRARY_PATH python setup.py build --java-home $JAVA_HOME
额外注意事项
- 必须安装JDK而不是JRE,jcc编译需要用到JDK里的头文件(比如
jni.h),JRE没有这些文件。 - 如果是用虚拟环境,确保虚拟环境里的Python能正确访问到Java的路径,不要在虚拟环境里单独设置错误的JAVA_HOME。
内容的提问来源于stack exchange,提问作者Karl Lamoureux
相关产品推荐
相关产品推荐

