在Hadoop2.x中运行c++代码

im9ewurl  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(339)

我已经在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++程序)提前谢谢

yhuiod9q

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-

sudo apt-get install gcc-multilib

以及

sudo apt-get install ia32-libs-dev

这个链接也有帮助。google提供了更多关于multilib支持的信息。

相关问题