2012-12-03 41 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」

希望這有助於

/李全安待辦事項