hadoop編譯C++的openssl鏈接問題

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即可編譯成功

發佈了99 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章