2011-11-10 88 views
0

我們通過Hadoop C/C++ API(libhdfs.so)使用Hadoop。我們使用最新的穩定Hadoop版本0.20.203。不幸的是,沒有明確(和最新)的指令來構建libhdfs.so。當我嘗試使用ant構建Hadoop時,它會失敗,並且不會構建libhdfs.so庫。Hadoop:如何編譯libhdfs.so?

使用以下嘗試:

ant -Dcompile.c++=true -Dlibhdfs=true compile-c++-libhdfs 

似乎在build.xml中的1761線失敗。在這條線有以下XML:

<exec executable="${c++.libhdfs.src}/configure" dir="${build.c++.libhdfs}" 
      failonerror="yes"> 

沒有人有指示建立libhdfs.so在Ubuntu 10.10 64位?

+0

配置是否存在並且對當前用戶具有可執行權限? – crazyjul

回答

1

我找到了解決我的問題的方法。它失敗了,因爲配置已經被執行了,我需要在構建庫之前在「src/C++/libhdfs」目錄中做一個「make dist clean」。現在,它的工作原理是利用預期:

ant -Dcompile.c++=true -Dlibhdfs=true compile-c++-libhdfs 
0

如果您在Hadoop-2.7.2工作,就可以使下的Hadoop/Hadoop的HDFS項目的cmake使用的/ Hadoop的HDFS/src目錄:

cmake -DJAVA_HOME=<your_jdk_path> -DGENERATED_JAVAH=<your_jdk_path> -DJAVA_JVM_LIBRARY=<your_jdk_path/jre/lib/amd64/server/libjvm.so> -DJAVA_INCLUDE_PATH=<your_jdk_path/include> -DJAVA_INCLUDE_PATH=<your_jdk_path/include/linux>

然後它會爲你生成makefile。那麼你這樣做: make

+0

您能否說明,這與解決方案有何關係,OP在4年多前提供了他自己;或許爲什麼它更好,如果是這樣的話。據說,一個使得dist清潔就足夠了......爲什麼應該是一個「更好」的cmake。謝謝。 – Dilettant