在编译Hadoop原生态库时,总是提示“/usr/bin/ld: cannot find -ljvm”错误。
[exec] /bin/sh ./libtool –tag=CC –mode=link gcc -g -Wall -fPIC -O2 -m64 -g -O2 -m64 -o libhadoop.la -rpath /usr/local/lib -version-info 1:0:0 ZlibCompressor.lo ZlibDecompressor.lo getGroup.lo JniBasedUnixGroupsMapping.lo JniBasedUnixGroupsNetgroupMapping.lo file_descriptor.lo errno_enum.lo NativeIO.lo -ldl -ljvm -ldl
[exec] gcc -shared .libs/ZlibCompressor.o .libs/ZlibDecompressor.o .libs/getGroup.o .libs/JniBasedUnixGroupsMapping.o .libs/JniBasedUnixGroupsNetgroupMapping.o .libs/file_descriptor.o .libs/errno_enum.o .libs/NativeIO.o -ljvm -ldl -m64 -m64 -Wl,-soname -Wl,libhadoop.so.1 -o .libs/libhadoop.so.1.0.0
[exec] /usr/bin/ld: cannot find -ljvm
[exec] collect2: ld returned 1 exit status
[exec] make[1]: *** [libhadoop.la] Error 1
[exec] make[1]: Leaving directory `/root/hadoop-0.20.205.0/build/native/Linux-amd64-64′
[exec] make: *** [all] Error 2
BUILD FAILED
/root/hadoop-0.20.205.0/build.xml:639: exec returned: 2
Total time: 16 seconds
系统自带Java版本
[root@RH2285 hadoop-0.20.205.0]# java -version
java version “1.6.0_17”
OpenJDK Runtime Environment (IcedTea6 1.7.4) (rhel-1.21.b17.el6-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
原因:未正确设置JDK。
解决办法:下载最新的jdk,并设置环境变量。
在/etc/profile文件中加入下面环境变量
JAVA_HOME=/opt/jdk1.7.0_03
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
如我们下载的最新jdk放在/opt/目录下。
[root@RH2285 lib]# ls /opt/jdk1.7.0_03/
bin COPYRIGHT db include jre lib LICENSE man README.html release src.zip THIRDPARTYLICENSEREADME.txt
[root@RH2285 lib]#