hadoop官方的二进制发布版本一直是32位平台编译的,对于java来说跨平台不影响使用,但是为了在c/c++程序中操作hdfs就做不到了,因为libhdfs.so是二进制不兼容的。
可能需要编译:$cd HADOOP_HOME<br>$ant compile-c++-libhdfs -Dislibhdfs=true(ant使用略)
一:文件目录:
我的hadoop和jdk安装路径HADOOP_HOME=/home/hadoop/hadoop-1.2.1,JAVA_HOME=/usr/lib/jvm/jdk1.8.0_45。
二:工程配置
1.库文件配置
使用libhdfs所需的.h和.c文件:hdfs.h,hdfs.c,hdfsJniHelper.h,hdfsJniHelper.c在${HADOOP_HOME}/src/c++/libhdfs/,将其加到工程src中。
而libhdfs是基于JNI的,所以JAVA的头文件也在哪也要告诉GCC。JAVA头文件在$JAVA_HOME/include和$JAVA_HOME/include/linux下。加到工程includes中
(可能需要修正相关文件中.h的路径,例如jni.h中#include "jni_md.h" -> #include "linux/jni_md.h"),
Project->Properties->C/C++ Build->Settings->Tool Settings->GCC C++ compiler->includes->include path(-l)
2.动态链接库配置
l
可能需要编译:$cd HADOOP_HOME<br>$ant compile-c++-libhdfs -Dislibhdfs=true(ant使用略)
一:文件目录:
我的hadoop和jdk安装路径HADOOP_HOME=/home/hadoop/hadoop-1.2.1,JAVA_HOME=/usr/lib/jvm/jdk1.8.0_45。
二:工程配置
1.库文件配置
使用libhdfs所需的.h和.c文件:hdfs.h,hdfs.c,hdfsJniHelper.h,hdfsJniHelper.c在${HADOOP_HOME}/src/c++/libhdfs/,将其加到工程src中。
而libhdfs是基于JNI的,所以JAVA的头文件也在哪也要告诉GCC。JAVA头文件在$JAVA_HOME/include和$JAVA_HOME/include/linux下。加到工程includes中
(可能需要修正相关文件中.h的路径,例如jni.h中#include "jni_md.h" -> #include "linux/jni_md.h"),
Project->Properties->C/C++ Build->Settings->Tool Settings->GCC C++ compiler->includes->include path(-l)
2.动态链接库配置
l