我已经在centos vm中安装了hadoop 2.5.2。我对hadoop还很陌生,我正试图在hadoop2.x中基于教程执行c++代码
我看到在hadoop2.x版本中,没有文件夹 (HADOOP_INSTALL)/c++/$(PLATFORM)/
. 我看到下面有个包裹 $(HADOOP_INSTALL)/include
还有像这样的库文件 hadoopipes.a
低于 $HADOOP_INSTALL/lib/native/libhadooppipes.a
等等。我调整了我的makefile如下:
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
有人能给我一些关于如何在hadoop2.x上编译c的建议吗我可以在hadoop1.x中执行c程序。我感兴趣的是,如何使用hadoop2.x中的hadooppipes执行c++程序)提前谢谢
1条答案
按热度按时间yhuiod9q1#
问题:
如何将32位二进制文件链接到hadoop归档文件(文件格式elf64-x86-64体系结构:i386:x86-64)来编译它。请给出建议
回答:你需要多库。如果它已经安装在ubuntu14.04或arch linux上,那么您必须在64位系统上启用32位应用程序。
例如,正如这位消息人士所说-
启用multilib存储库允许用户在ArchLinux的64位安装上运行和构建32位应用程序。multilib创建一个目录,其中包含/usr/lib32/中的32位指令集库,32位二进制应用程序在执行时可能需要这些库。
否则,必须安装multilib-
以及
这个链接也有帮助。google提供了更多关于multilib支持的信息。