hadoop的工程是我在電腦上重新編譯成32位的,但是直接使用hadoop權威指南的C++文件以及makefile會報錯。
makefile:
cc = g++
CPPFLAGS = -m32 -I$(HADOOP_DEV_HOME)/include
maxTemperature:MaxTemperature.cpp
$(cc) $(CPPFLAGS) $< -lm -Wall -L$(HADOOP_DEV_HOME)/lib/native -lhadooppipes -lhadooputils -lpthread -g -O2 -o $@
clean:
rm maxTemperature
其中-I是包括特定的頭文件夾,-L是包括特定的庫文件夾,-l則是包括特定的庫文件,-O2是優化選項,-o是制定目標文件名。
但是在make時報錯:
*
/usr/hadoop/hadoop-2.6.0/lib/native/libhadooppipes.a(HadoopPipes.cc.o):在函數‘HadoopPipes::BinaryProtocol::createDigest(std::string&,
std::string&)’中:
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:426:對‘EVP_sha1’未定義的引用 /home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:426:對‘HMAC_Init’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:427:對‘HMAC_Update’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:429:對‘HMAC_Final’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:430:對‘HMAC_CTX_cleanup’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:436:對‘BIO_f_base64’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:436:對‘BIO_new’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:437:對‘BIO_s_mem’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:437:對‘BIO_new’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:438:對‘BIO_push’未定義的引用 /home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:439:對‘BIO_write’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:440:對‘BIO_ctrl’未定義的引用 /home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:441:對‘BIO_ctrl’未定義的引用 /home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:446:對‘BIO_free_all’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:426:對‘EVP_sha1’未定義的引用 /home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:426:對‘HMAC_Init’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:427:對‘HMAC_Update’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:429:對‘HMAC_Final’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:430:對‘HMAC_CTX_cleanup’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:436:對‘BIO_f_base64’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:436:對‘BIO_new’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:437:對‘BIO_s_mem’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:437:對‘BIO_new’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:438:對‘BIO_push’未定義的引用 /home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:439:對‘BIO_write’未定義的引用
/home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:440:對‘BIO_ctrl’未定義的引用 /home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:441:對‘BIO_ctrl’未定義的引用 /home/ifuding/Files/hadoop/hadoop-2.6.0-src/hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc:446:對‘BIO_free_all’未定義的引用
collect2: error: ld returned 1 exit status
*
查了一些資料發現上面未定義的引用全是關於openssl的,在makefile加上 -lssl -lcrypto即可編譯成功