我已经在 CentOS VM 中安装了 hadoop 2.5.2。我对 hadoop 很陌生,正在尝试根据教程在 hadoop 2.x 中执行 c++ 代码
我看到在Hadoop 2.x版本中,没有文件夹(HADOOP_INSTALL)/c++/$(PLATFORM)/
。我看到$(HADOOP_INSTALL)/include
下有包含和库文件,如hadoopipes.a
$HADOOP_INSTALL/lib/native/libhadooppipes.a
等。我像这样调整了我的制作文件:
CC = g++
HADOOP_INSTALL = /usr/local/hadoop
CPPFLAGS = -m32 -I$(HADOOP_INSTALL)/include
wordcount: WordCount.cpp
$(CC) $(CPPFLAGS) $< -Wall -L$(HADOOP_INSTALL)/lib/native -lhadooppipes
-lhadooputils -lpthread -g -O2 -o $@
and changed in code ( rest of code is same as in the link above )
#include "Pipes.hh"
#include "TemplateFactory.hh"
#include "StringUtils.hh"
when I compile I get
$ make wordcount
g++ -m32 -I/usr/local/hadoop/include WordCount.cpp -Wall -L/usr/local/hadoop/lib/native -lhadooppipes
-lhadooputils -lpthread -g -O2 -o wordcount
/usr/bin/ld: skipping incompatible /usr/local/hadoop/lib/native/libhadooppipes.a when searching for -lhadooppipes
/usr/bin/ld: cannot find -lhadooppipes
collect2: ld returned 1 exit status
谁能给出有关如何在 hadoop 2.x 上编译 c++ 的指示。 (不过我可以在 hadoop 1.x 中执行 c++ 程序。我感兴趣的是,如何在Hadoop2.x中使用Hadoop管道执行c ++程序)提前致谢
问题:
如何通过链接到 hadoop 存档来编译 32 位二进制文件(文件 格式 ELF64-x86-64 体系结构:i386:x86-64)。请指教
答:为此,您需要多库。如果它已经安装在 Ubuntu 14.04 或 Arch Linux 上,则必须在 64 位系统上启用 32 位应用程序。
例如,正如该消息来源所说——
启用 multilib 存储库允许用户运行和构建 64 位 Arch Linux 安装上的 32 位应用程序。多库 创建一个包含 32 位指令集库的目录 /usr/lib32/,32 位二进制应用程序在执行时可能需要。
否则,您必须安装 multilib -
sudo apt-get install gcc-multilib
和
sudo apt-get install ia32-libs-dev
此链接也可以提供帮助。谷歌更多关于多库支持。