Hadoop n00b在这里,刚刚开始使用Hadoop Pipes。我在使用hadoop-0.20.203(当前最新版本)编译一个简单的WordCount示例时遇到链接器错误,该示例在hadoop-0.20.2中没有出现相同的代码
表单链接器错误:HadoopPipes.cc中对“EVP_sha1”的未定义引用。
EVP_sha1(以及我得到的所有未定义的引用)都是openssl库的一部分,来自hadoop-0.20.203的HadoopPipes.cc使用,但hadoop-0.20.2没有。
我已经尝试调整我的makefile链接到ssl库,但我还是运气不好。任何想法将不胜感激。谢谢!
PS,这是我当前的makefile:
CC = g++
HADOOP_INSTALL = /usr/local/hadoop-0.20.203.0
SSL_INSTALL = /usr/local/ssl
PLATFORM = Linux-amd64-64
CPPFLAGS = -m64 -I$(HADOOP_INSTALL)/c++/$(PLATFORM)/include -I$(SSL_INSTALL)/include
WordCount: WordCount.cc
$(CC) $(CPPFLAGS) $< -Wall -Wextra -L$(SSL_INSTALL)/lib -lssl -lcrypto -L$(HADOOP_INSTALL)/c++/$(PLATFORM)/lib -lhadooppipes -lhadooputils -lpthread -g -O2 -o $@
我正在使用的实际程序可以在http://cs.smith.edu/dftwiki/index.php/Hadoop_Tutorial_2.2_--_Running_C%2B%2B_Programs_on_Hadoop
找到答案 0 :(得分:8)
这里有同样的问题:回答是将-lcrypto添加到编译命令行:
这是修补构建过程的补丁:
diff --git src/examples/pipes/Makefile.in src/examples/pipes/Makefile.in
index 17efa2a..1d8af8e 100644
--- src/examples/pipes/Makefile.in
+++ src/examples/pipes/Makefile.in
@@ -233,7 +233,7 @@ AM_CXXFLAGS = -Wall -I$(HADOOP_UTILS_PREFIX)/include \
-I$(HADOOP_PIPES_PREFIX)/include
LDADD = -L$(HADOOP_UTILS_PREFIX)/lib -L$(HADOOP_PIPES_PREFIX)/lib \
- -lhadooppipes -lhadooputils
+ -lhadooppipes -lhadooputils -lcrypto
# Define the sources for each program
答案 1 :(得分:-1)
您只需要对Makefile进行一些更改。原本伴随hadoop的库似乎没有这样做。您需要“重新制作”它们并更改链接路径。 可以在http://goo.gl/y5iGZF找到对此的全面答案。