2012-12-03 96 views
1

我试图编译以下编译命令Hadoop的C++字计数例如编译问题

g++ -o a -L/home/pc/run/hadoop-install/hadoop/lib/native -lhadooppipes -lhadooputils -lpthread -I/home/pc/run/hadoop-install/hadoop/include wordCount.cpp -Wall 

Hadoop的版本是0.23.5 Hadoop的wordCout例子(C++)。

操作系统是Ubuntu的12.04

不过,我得到一个链接错误如下:

g++ -o a -L/home/pc/run/hadoop-install/hadoop/lib/native -lhadooppipes -lhadooputils -lpthread -I/home/pc/run/hadoop-install/hadoop\ 
    /include wordCount.cpp -Wall 
6/tmp/cc3Cte9z.o: In function `main': 
7wordCount.cpp:(.text+0x26): undefined reference to `HadoopPipes::runTask(HadoopPipes::Factory const&)' 
8/tmp/cc3Cte9z.o: In function `WordCountMap::map(HadoopPipes::MapContext&)': 
9wordCount.cpp:(.text._ZN12WordCountMap3mapERN11HadoopPipes10MapContextE[WordCountMap::map(HadoopPipes::MapContext&)]+0x2e): undefin\ 
    ed reference to `HadoopUtils::splitString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const\ 
    *)' 
10/tmp/cc3Cte9z.o: In function `WordCountReduce::reduce(HadoopPipes::ReduceContext&)': 
11wordCount.cpp:(.text._ZN15WordCountReduce6reduceERN11HadoopPipes13ReduceContextE[WordCountReduce::reduce(HadoopPipes::ReduceContext\ 
    &)]+0x26): undefined reference to `HadoopUtils::toInt(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&\ 
)' 
12wordCount.cpp:(.text._ZN15WordCountReduce6reduceERN11HadoopPipes13ReduceContextE[WordCountReduce::reduce(HadoopPipes::ReduceContext\ 
    &)]+0x5b): undefined reference to `HadoopUtils::toString(int)' 
13collect2: ld returned 1 exit status 
14make: *** [a] Error 1 

任何人都知道其中的问题呢?

+2

也许头是一个不同的版本。所以 –

回答

0

检查系统中的g ++版本>版本4,源文件的名称放在库链接的前面。因此,在您的系统中,正确的顺序可能是:

“g ++ wordCount.cpp -oa -L/home/pc/run/hadoop-install/hadoop/lib/native -lhadooppipes -lhadooputils -lpthread -I/home/PC /运行/ Hadoop的安装/ Hadoop的/包括-Wall”

希望这有助于

/李全安待办事项